From 9608e720a4e5f977c0e2db0de7b264574b0ddeac Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 22 Jul 2022 15:52:06 +0200 Subject: [PATCH 001/280] Add ability to follow hashtags in web UI (#18862) --- app/javascript/mastodon/actions/tags.js | 92 +++++++++++++++++++ .../features/hashtag_timeline/index.js | 87 ++++++++++++++---- app/javascript/mastodon/reducers/index.js | 2 + app/javascript/mastodon/reducers/tags.js | 25 +++++ 4 files changed, 188 insertions(+), 18 deletions(-) create mode 100644 app/javascript/mastodon/actions/tags.js create mode 100644 app/javascript/mastodon/reducers/tags.js diff --git a/app/javascript/mastodon/actions/tags.js b/app/javascript/mastodon/actions/tags.js new file mode 100644 index 000000000..216e5b541 --- /dev/null +++ b/app/javascript/mastodon/actions/tags.js @@ -0,0 +1,92 @@ +import api from '../api'; + +export const HASHTAG_FETCH_REQUEST = 'HASHTAG_FETCH_REQUEST'; +export const HASHTAG_FETCH_SUCCESS = 'HASHTAG_FETCH_SUCCESS'; +export const HASHTAG_FETCH_FAIL = 'HASHTAG_FETCH_FAIL'; + +export const HASHTAG_FOLLOW_REQUEST = 'HASHTAG_FOLLOW_REQUEST'; +export const HASHTAG_FOLLOW_SUCCESS = 'HASHTAG_FOLLOW_SUCCESS'; +export const HASHTAG_FOLLOW_FAIL = 'HASHTAG_FOLLOW_FAIL'; + +export const HASHTAG_UNFOLLOW_REQUEST = 'HASHTAG_UNFOLLOW_REQUEST'; +export const HASHTAG_UNFOLLOW_SUCCESS = 'HASHTAG_UNFOLLOW_SUCCESS'; +export const HASHTAG_UNFOLLOW_FAIL = 'HASHTAG_UNFOLLOW_FAIL'; + +export const fetchHashtag = name => (dispatch, getState) => { + dispatch(fetchHashtagRequest()); + + api(getState).get(`/api/v1/tags/${name}`).then(({ data }) => { + dispatch(fetchHashtagSuccess(name, data)); + }).catch(err => { + dispatch(fetchHashtagFail(err)); + }); +}; + +export const fetchHashtagRequest = () => ({ + type: HASHTAG_FETCH_REQUEST, +}); + +export const fetchHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FETCH_SUCCESS, + name, + tag, +}); + +export const fetchHashtagFail = error => ({ + type: HASHTAG_FETCH_FAIL, + error, +}); + +export const followHashtag = name => (dispatch, getState) => { + dispatch(followHashtagRequest(name)); + + api(getState).post(`/api/v1/tags/${name}/follow`).then(({ data }) => { + dispatch(followHashtagSuccess(name, data)); + }).catch(err => { + dispatch(followHashtagFail(name, err)); + }); +}; + +export const followHashtagRequest = name => ({ + type: HASHTAG_FOLLOW_REQUEST, + name, +}); + +export const followHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FOLLOW_SUCCESS, + name, + tag, +}); + +export const followHashtagFail = (name, error) => ({ + type: HASHTAG_FOLLOW_FAIL, + name, + error, +}); + +export const unfollowHashtag = name => (dispatch, getState) => { + dispatch(unfollowHashtagRequest(name)); + + api(getState).post(`/api/v1/tags/${name}/unfollow`).then(({ data }) => { + dispatch(unfollowHashtagSuccess(name, data)); + }).catch(err => { + dispatch(unfollowHashtagFail(name, err)); + }); +}; + +export const unfollowHashtagRequest = name => ({ + type: HASHTAG_FETCH_REQUEST, + name, +}); + +export const unfollowHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FETCH_SUCCESS, + name, + tag, +}); + +export const unfollowHashtagFail = (name, error) => ({ + type: HASHTAG_FETCH_FAIL, + name, + error, +}); diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js index 6a808eb30..dc8a61640 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.js +++ b/app/javascript/mastodon/features/hashtag_timeline/index.js @@ -1,21 +1,32 @@ import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; import StatusListContainer from '../ui/containers/status_list_container'; -import Column from '../../components/column'; -import ColumnHeader from '../../components/column_header'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; import ColumnSettingsContainer from './containers/column_settings_container'; -import { expandHashtagTimeline, clearTimeline } from '../../actions/timelines'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; -import { FormattedMessage } from 'react-intl'; -import { connectHashtagStream } from '../../actions/streaming'; +import { expandHashtagTimeline, clearTimeline } from 'mastodon/actions/timelines'; +import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; +import { injectIntl, FormattedMessage, defineMessages } from 'react-intl'; +import { connectHashtagStream } from 'mastodon/actions/streaming'; import { isEqual } from 'lodash'; +import { fetchHashtag, followHashtag, unfollowHashtag } from 'mastodon/actions/tags'; +import Icon from 'mastodon/components/icon'; +import classNames from 'classnames'; + +const messages = defineMessages({ + followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' }, + unfollowHashtag: { id: 'hashtag.unfollow', defaultMessage: 'Unfollow hashtag' }, +}); const mapStateToProps = (state, props) => ({ hasUnread: state.getIn(['timelines', `hashtag:${props.params.id}${props.params.local ? ':local' : ''}`, 'unread']) > 0, + tag: state.getIn(['tags', props.params.id]), }); export default @connect(mapStateToProps) +@injectIntl class HashtagTimeline extends React.PureComponent { disconnects = []; @@ -25,7 +36,9 @@ class HashtagTimeline extends React.PureComponent { columnId: PropTypes.string, dispatch: PropTypes.func.isRequired, hasUnread: PropTypes.bool, + tag: ImmutablePropTypes.map, multiColumn: PropTypes.bool, + intl: PropTypes.object, }; handlePin = () => { @@ -39,7 +52,8 @@ class HashtagTimeline extends React.PureComponent { } title = () => { - let title = [this.props.params.id]; + const { id } = this.props.params; + const title = [id]; if (this.additionalFor('any')) { title.push(' ', ); @@ -95,23 +109,34 @@ class HashtagTimeline extends React.PureComponent { this.disconnects = []; } - componentDidMount () { + _unload () { + const { dispatch } = this.props; + const { id, local } = this.props.params; + + this._unsubscribe(); + dispatch(clearTimeline(`hashtag:${id}${local ? ':local' : ''}`)); + } + + _load() { const { dispatch } = this.props; const { id, tags, local } = this.props.params; this._subscribe(dispatch, id, tags, local); dispatch(expandHashtagTimeline(id, { tags, local })); + dispatch(fetchHashtag(id)); } - componentWillReceiveProps (nextProps) { - const { dispatch, params } = this.props; - const { id, tags, local } = nextProps.params; + componentDidMount () { + this._load(); + } + + componentDidUpdate (prevProps) { + const { params } = this.props; + const { id, tags, local } = prevProps.params; if (id !== params.id || !isEqual(tags, params.tags) || !isEqual(local, params.local)) { - this._unsubscribe(); - this._subscribe(dispatch, id, tags, local); - dispatch(clearTimeline(`hashtag:${id}${local ? ':local' : ''}`)); - dispatch(expandHashtagTimeline(id, { tags, local })); + this._unload(); + this._load(); } } @@ -124,15 +149,40 @@ class HashtagTimeline extends React.PureComponent { } handleLoadMore = maxId => { - const { id, tags, local } = this.props.params; - this.props.dispatch(expandHashtagTimeline(id, { maxId, tags, local })); + const { dispatch, params } = this.props; + const { id, tags, local } = params; + + dispatch(expandHashtagTimeline(id, { maxId, tags, local })); + } + + handleFollow = () => { + const { dispatch, params, tag } = this.props; + const { id } = params; + + if (tag.get('following')) { + dispatch(unfollowHashtag(id)); + } else { + dispatch(followHashtag(id)); + } } render () { - const { hasUnread, columnId, multiColumn } = this.props; + const { hasUnread, columnId, multiColumn, tag, intl } = this.props; const { id, local } = this.props.params; const pinned = !!columnId; + let followButton; + + if (tag) { + const following = tag.get('following'); + + followButton = ( + + ); + } + return ( {columnId && } diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js index 0219d8a5e..d3d0303df 100644 --- a/app/javascript/mastodon/reducers/index.js +++ b/app/javascript/mastodon/reducers/index.js @@ -39,6 +39,7 @@ import markers from './markers'; import picture_in_picture from './picture_in_picture'; import accounts_map from './accounts_map'; import history from './history'; +import tags from './tags'; const reducers = { announcements, @@ -81,6 +82,7 @@ const reducers = { markers, picture_in_picture, history, + tags, }; export default combineReducers(reducers); diff --git a/app/javascript/mastodon/reducers/tags.js b/app/javascript/mastodon/reducers/tags.js new file mode 100644 index 000000000..d24098e39 --- /dev/null +++ b/app/javascript/mastodon/reducers/tags.js @@ -0,0 +1,25 @@ +import { + HASHTAG_FETCH_SUCCESS, + HASHTAG_FOLLOW_REQUEST, + HASHTAG_FOLLOW_FAIL, + HASHTAG_UNFOLLOW_REQUEST, + HASHTAG_UNFOLLOW_FAIL, +} from 'mastodon/actions/tags'; +import { Map as ImmutableMap, fromJS } from 'immutable'; + +const initialState = ImmutableMap(); + +export default function tags(state = initialState, action) { + switch(action.type) { + case HASHTAG_FETCH_SUCCESS: + return state.set(action.name, fromJS(action.tag)); + case HASHTAG_FOLLOW_REQUEST: + case HASHTAG_UNFOLLOW_FAIL: + return state.setIn([action.name, 'following'], true); + case HASHTAG_FOLLOW_FAIL: + case HASHTAG_UNFOLLOW_REQUEST: + return state.setIn([action.name, 'following'], false); + default: + return state; + } +}; From 3bc3a172eb87c9635c8e72cc6b56f93e6707b2ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 00:56:29 +0900 Subject: [PATCH 002/280] Bump sass from 1.53.0 to 1.54.0 (#18881) Bumps [sass](https://github.com/sass/dart-sass) from 1.53.0 to 1.54.0. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.53.0...1.54.0) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9b933a59d..b19aeaabc 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.53.0", + "sass": "^1.54.0", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 2168c1230..1735e8fa6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9749,10 +9749,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.53.0: - version "1.53.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.53.0.tgz#eab73a7baac045cc57ddc1d1ff501ad2659952eb" - integrity sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ== +sass@^1.54.0: + version "1.54.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.0.tgz#24873673265e2a4fe3d3a997f714971db2fba1f4" + integrity sha512-C4zp79GCXZfK0yoHZg+GxF818/aclhp9F48XBu/+bm9vXEVAYov9iU3FBVRMq3Hx3OA4jfKL+p2K9180mEh0xQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From f305bd2c761114935e9dddd3116675b62933c3a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 00:57:08 +0900 Subject: [PATCH 003/280] Bump eslint-plugin-jsx-a11y from 6.6.0 to 6.6.1 (#18884) Bumps [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) from 6.6.0 to 6.6.1. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.6.0...v6.6.1) --- updated-dependencies: - dependency-name: eslint-plugin-jsx-a11y dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index b19aeaabc..3f777ee75 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "babel-jest": "^28.1.3", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", - "eslint-plugin-jsx-a11y": "~6.6.0", + "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.1", "jest": "^28.1.3", diff --git a/yarn.lock b/yarn.lock index 1735e8fa6..d054daf02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1041,7 +1041,7 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== @@ -2456,10 +2456,10 @@ autoprefixer@^9.8.8: postcss "^7.0.32" postcss-value-parser "^4.1.0" -axe-core@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" - integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== +axe-core@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== axios@^0.27.2: version "0.27.2" @@ -4518,21 +4518,21 @@ eslint-plugin-import@~2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-jsx-a11y@~6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz#2c5ac12e013eb98337b9aa261c3b355275cc6415" - integrity sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw== +eslint-plugin-jsx-a11y@~6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== dependencies: - "@babel/runtime" "^7.18.3" + "@babel/runtime" "^7.18.9" aria-query "^4.2.2" array-includes "^3.1.5" ast-types-flow "^0.0.7" - axe-core "^4.4.2" + axe-core "^4.4.3" axobject-query "^2.2.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.3.1" + jsx-ast-utils "^3.3.2" language-tags "^1.0.5" minimatch "^3.1.2" semver "^6.3.0" @@ -6944,10 +6944,10 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz#a3e0f1cb7e230954eab4dcbce9f6288a78f8ba44" - integrity sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" + integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== dependencies: array-includes "^3.1.5" object.assign "^4.1.2" From d52afaa6c71b02d56935b4f64234b48f95913efc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 00:59:37 +0900 Subject: [PATCH 004/280] Bump nokogiri from 1.13.7 to 1.13.8 (#18882) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.7 to 1.13.8. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.7...v1.13.8) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index af07cb9a2..d9646bd2d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -405,7 +405,7 @@ GEM net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.1.0) nio4r (2.5.8) - nokogiri (1.13.7) + nokogiri (1.13.8) mini_portile2 (~> 2.8.0) racc (~> 1.4) nsa (0.2.8) From 1f611d6ffb7170cd3121920c6c6d2da36b9377df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:09:28 +0900 Subject: [PATCH 005/280] Bump oj from 3.13.17 to 3.13.18 (#18896) Bumps [oj](https://github.com/ohler55/oj) from 3.13.17 to 3.13.18. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.17...v3.13.18) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d9646bd2d..408424e0c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.17) + oj (3.13.18) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From f12afa177ebb51e92c222f43c01f7a5c11f4ec0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:11:57 +0900 Subject: [PATCH 006/280] Bump rqrcode from 2.1.1 to 2.1.2 (#18897) Bumps [rqrcode](https://github.com/whomwah/rqrcode) from 2.1.1 to 2.1.2. - [Release notes](https://github.com/whomwah/rqrcode/releases) - [Changelog](https://github.com/whomwah/rqrcode/blob/master/CHANGELOG.md) - [Commits](https://github.com/whomwah/rqrcode/compare/v2.1.1...v2.1.2) --- updated-dependencies: - dependency-name: rqrcode dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 408424e0c..76c5fdb49 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -543,7 +543,7 @@ GEM rexml (3.2.5) rotp (6.2.0) rpam2 (4.0.2) - rqrcode (2.1.1) + rqrcode (2.1.2) chunky_png (~> 1.0) rqrcode_core (~> 1.0) rqrcode_core (1.2.0) From 07025a7f1bb8cee45e66249320336bf37aedaa27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:16:28 +0900 Subject: [PATCH 007/280] Bump faker from 2.21.0 to 2.22.0 (#18899) Bumps [faker](https://github.com/faker-ruby/faker) from 2.21.0 to 2.22.0. - [Release notes](https://github.com/faker-ruby/faker/releases) - [Changelog](https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md) - [Commits](https://github.com/faker-ruby/faker/compare/v2.21.0...v2.22.0) --- updated-dependencies: - dependency-name: faker dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index ce5e231d0..6f042eefe 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ end group :test do gem 'capybara', '~> 3.37' gem 'climate_control', '~> 0.2' - gem 'faker', '~> 2.21' + gem 'faker', '~> 2.22' gem 'microformats', '~> 4.4' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' diff --git a/Gemfile.lock b/Gemfile.lock index 76c5fdb49..508fd3957 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -220,7 +220,7 @@ GEM tzinfo excon (0.76.0) fabrication (2.29.0) - faker (2.21.0) + faker (2.22.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) faraday-em_http (~> 1.0) @@ -305,7 +305,7 @@ GEM httplog (1.5.0) rack (>= 1.0) rainbow (>= 2.0.0) - i18n (1.10.0) + i18n (1.12.0) concurrent-ruby (~> 1.0) i18n-tasks (1.0.11) activesupport (>= 4.0.2) @@ -759,7 +759,7 @@ DEPENDENCIES dotenv-rails (~> 2.7) ed25519 (~> 1.3) fabrication (~> 2.29) - faker (~> 2.21) + faker (~> 2.22) fast_blank (~> 1.0) fastimage fog-core (<= 2.1.0) From 7ad86cbc96533055e5afb12d8da8fc807059cdc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:24:30 +0900 Subject: [PATCH 008/280] Bump stackprof from 0.2.19 to 0.2.20 (#18903) Bumps [stackprof](https://github.com/tmm1/stackprof) from 0.2.19 to 0.2.20. - [Release notes](https://github.com/tmm1/stackprof/releases) - [Changelog](https://github.com/tmm1/stackprof/blob/master/CHANGELOG.md) - [Commits](https://github.com/tmm1/stackprof/compare/v0.2.19...v0.2.20) --- updated-dependencies: - dependency-name: stackprof dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 508fd3957..436838fc3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -639,7 +639,7 @@ GEM sshkit (1.21.2) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - stackprof (0.2.19) + stackprof (0.2.20) statsd-ruby (1.5.0) stoplight (3.0.0) strong_migrations (0.7.9) From 742a8301e7dc3b4d7e83a276dbce66ccd617135b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:27:12 +0900 Subject: [PATCH 009/280] Bump fabrication from 2.29.0 to 2.30.0 (#18901) Bumps [fabrication](https://gitlab.com/fabrication-gem/fabrication/) from 2.29.0 to 2.30.0. - [Release notes](https://gitlab.com/fabrication-gem/fabrication//tags) - [Commits](https://gitlab.com/fabrication-gem/fabrication//compare/2.29.0...2.30.0) --- updated-dependencies: - dependency-name: fabrication dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 6f042eefe..0a99f075e 100644 --- a/Gemfile +++ b/Gemfile @@ -99,7 +99,7 @@ gem 'json-ld-preloaded', '~> 3.2' gem 'rdf-normalize', '~> 0.5' group :development, :test do - gem 'fabrication', '~> 2.29' + gem 'fabrication', '~> 2.30' gem 'fuubar', '~> 2.5' gem 'i18n-tasks', '~> 1.0', require: false gem 'pry-byebug', '~> 3.9' diff --git a/Gemfile.lock b/Gemfile.lock index 436838fc3..1b6b847ce 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -219,7 +219,7 @@ GEM et-orbi (1.2.7) tzinfo excon (0.76.0) - fabrication (2.29.0) + fabrication (2.30.0) faker (2.22.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) @@ -758,7 +758,7 @@ DEPENDENCIES doorkeeper (~> 5.5) dotenv-rails (~> 2.7) ed25519 (~> 1.3) - fabrication (~> 2.29) + fabrication (~> 2.30) faker (~> 2.22) fast_blank (~> 1.0) fastimage From f3bb142b8f86219e5dfca6d8fa99f95ff37d37fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:29:43 +0900 Subject: [PATCH 010/280] Bump bootsnap from 1.12.0 to 1.13.0 (#18902) Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.12.0 to 1.13.0. - [Release notes](https://github.com/Shopify/bootsnap/releases) - [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md) - [Commits](https://github.com/Shopify/bootsnap/compare/v1.12.0...v1.13.0) --- updated-dependencies: - dependency-name: bootsnap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 0a99f075e..5bb386a80 100644 --- a/Gemfile +++ b/Gemfile @@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' gem 'addressable', '~> 2.8' -gem 'bootsnap', '~> 1.12.0', require: false +gem 'bootsnap', '~> 1.13.0', require: false gem 'browser' gem 'charlock_holmes', '~> 0.7.7' gem 'chewy', '~> 7.2' diff --git a/Gemfile.lock b/Gemfile.lock index 1b6b847ce..91c8de7aa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -114,7 +114,7 @@ GEM debug_inspector (>= 0.0.1) blurhash (0.1.6) ffi (~> 1.14) - bootsnap (1.12.0) + bootsnap (1.13.0) msgpack (~> 1.2) brakeman (5.2.3) browser (4.2.0) @@ -397,7 +397,7 @@ GEM mini_mime (1.1.2) mini_portile2 (2.8.0) minitest (5.16.0) - msgpack (1.5.2) + msgpack (1.5.4) multi_json (1.15.0) multipart-post (2.1.1) net-ldap (0.17.1) @@ -734,7 +734,7 @@ DEPENDENCIES better_errors (~> 2.9) binding_of_caller (~> 1.0) blurhash (~> 0.1) - bootsnap (~> 1.12.0) + bootsnap (~> 1.13.0) brakeman (~> 5.2) browser bullet (~> 7.0) From 7bfbf1c119a8c2a8a3655505fdc1ce098d47cd93 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:31:49 +0900 Subject: [PATCH 011/280] Bump sidekiq-unique-jobs from 7.1.25 to 7.1.26 (#18900) Bumps [sidekiq-unique-jobs](https://github.com/mhenrixon/sidekiq-unique-jobs) from 7.1.25 to 7.1.26. - [Release notes](https://github.com/mhenrixon/sidekiq-unique-jobs/releases) - [Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.1.25...v7.1.26) --- updated-dependencies: - dependency-name: sidekiq-unique-jobs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 91c8de7aa..ad99e3909 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -612,7 +612,7 @@ GEM rufus-scheduler (~> 3.2) sidekiq (>= 4) tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.25) + sidekiq-unique-jobs (7.1.26) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) From 6af383213adc1666fd222c11837a9a0ddb5d24bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:39:38 +0900 Subject: [PATCH 012/280] Bump dotenv-rails from 2.7.6 to 2.8.1 (#18898) Bumps [dotenv-rails](https://github.com/bkeepers/dotenv) from 2.7.6 to 2.8.1. - [Release notes](https://github.com/bkeepers/dotenv/releases) - [Changelog](https://github.com/bkeepers/dotenv/blob/master/Changelog.md) - [Commits](https://github.com/bkeepers/dotenv/compare/v2.7.6...v2.8.1) --- updated-dependencies: - dependency-name: dotenv-rails dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Gemfile b/Gemfile index 5bb386a80..1690f92df 100644 --- a/Gemfile +++ b/Gemfile @@ -16,7 +16,7 @@ gem 'hamlit-rails', '~> 0.2' gem 'pg', '~> 1.4' gem 'makara', '~> 0.5' gem 'pghero', '~> 2.8' -gem 'dotenv-rails', '~> 2.7' +gem 'dotenv-rails', '~> 2.8' gem 'aws-sdk-s3', '~> 1.114', require: false gem 'fog-core', '<= 2.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index ad99e3909..a37486aaa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -200,9 +200,9 @@ GEM unf (>= 0.0.5, < 1.0.0) doorkeeper (5.5.4) railties (>= 5) - dotenv (2.7.6) - dotenv-rails (2.7.6) - dotenv (= 2.7.6) + dotenv (2.8.1) + dotenv-rails (2.8.1) + dotenv (= 2.8.1) railties (>= 3.2) ed25519 (1.3.0) elasticsearch (7.13.3) @@ -396,7 +396,7 @@ GEM mime-types-data (3.2022.0105) mini_mime (1.1.2) mini_portile2 (2.8.0) - minitest (5.16.0) + minitest (5.16.2) msgpack (1.5.4) multi_json (1.15.0) multipart-post (2.1.1) @@ -488,8 +488,8 @@ GEM rack (>= 2.1.0) rack-proxy (0.7.0) rack - rack-test (1.1.0) - rack (>= 1.0, < 3) + rack-test (2.0.2) + rack (>= 1.3) rails (6.1.6) actioncable (= 6.1.6) actionmailbox (= 6.1.6) @@ -671,7 +671,7 @@ GEM twitter-text (3.1.0) idn-ruby unf (~> 0.1.0) - tzinfo (2.0.4) + tzinfo (2.0.5) concurrent-ruby (~> 1.0) tzinfo-data (1.2022.1) tzinfo (>= 1.0.0) @@ -756,7 +756,7 @@ DEPENDENCIES devise_pam_authenticatable2 (~> 9.2) discard (~> 1.2) doorkeeper (~> 5.5) - dotenv-rails (~> 2.7) + dotenv-rails (~> 2.8) ed25519 (~> 1.3) fabrication (~> 2.30) faker (~> 2.22) From e606140bacbfd4a3a5a203458c451d334b1b204f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:48:43 +0900 Subject: [PATCH 013/280] Bump pg from 1.4.1 to 1.4.2 (#18895) Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.1 to 1.4.2. - [Release notes](https://github.com/ged/ruby-pg/releases) - [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc) - [Commits](https://github.com/ged/ruby-pg/compare/v1.4.1...v1.4.2) --- updated-dependencies: - dependency-name: pg dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a37486aaa..6130ea07f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -447,7 +447,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.4.1) + pg (1.4.2) pghero (2.8.3) activerecord (>= 5) pkg-config (1.4.7) From 4b36e47474d11849ac28c6c8121a568feb8308a7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 30 Jul 2022 15:09:18 +0200 Subject: [PATCH 014/280] New Crowdin updates (#18855) * New translations en.json (Hebrew) * New translations en.json (Indonesian) * New translations activerecord.en.yml (Hebrew) * New translations activerecord.en.yml (Indonesian) * New translations en.yml (Hebrew) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Hebrew) * New translations activerecord.en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations devise.en.yml (Hebrew) * New translations en.json (Chinese Simplified) * New translations en.json (Galician) * New translations en.json (Punjabi) * New translations en.json (Irish) * New translations en.json (Hungarian) * New translations en.json (Armenian) * New translations en.json (Italian) * New translations en.json (Georgian) * New translations en.json (Korean) * New translations en.json (Lithuanian) * New translations en.json (Macedonian) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Basque) * New translations en.json (Russian) * New translations en.json (Slovak) * New translations en.json (Slovenian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Icelandic) * New translations en.json (Finnish) * New translations en.json (Frisian) * New translations en.json (Hebrew) * New translations en.json (Greek) * New translations en.json (Albanian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Japanese) * New translations en.json (Dutch) * New translations en.json (Portuguese) * New translations en.json (Chinese Simplified) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Romanian) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Bulgarian) * New translations en.json (Catalan) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Sinhala) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Indonesian) * New translations en.json (Esperanto) * New translations en.json (Thai) * New translations en.json (Welsh) * New translations en.json (Persian) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Cornish) * New translations en.json (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.json (Corsican) * New translations en.json (Malayalam) * New translations en.json (Sardinian) * New translations en.json (Sanskrit) * New translations en.json (Kabyle) * New translations en.json (Ido) * New translations en.json (Taigi) * New translations en.json (Silesian) * New translations en.json (Breton) * New translations en.json (Tatar) * New translations en.json (Tamil) * New translations en.json (Kazakh) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Estonian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Uyghur) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Thai) * New translations activerecord.en.yml (Thai) * New translations en.json (Spanish, Argentina) * New translations en.json (Chinese Traditional) * New translations en.json (Galician) * New translations en.json (Greek) * New translations en.json (Hungarian) * New translations activerecord.en.yml (Chinese Simplified) * New translations en.json (Polish) * New translations en.json (Latvian) * New translations en.json (Albanian) * New translations simple_form.en.yml (Turkish) * New translations activerecord.en.yml (Turkish) * New translations en.json (Russian) * New translations en.json (Turkish) * New translations en.json (Portuguese) * New translations en.json (Spanish) * New translations en.json (Danish) * New translations en.json (Russian) * New translations en.json (Slovak) * New translations en.json (Slovenian) * New translations en.json (Ukrainian) * New translations en.json (Portuguese) * New translations en.json (Italian) * New translations en.json (Polish) * New translations en.json (Swedish) * New translations en.json (Ukrainian) * New translations en.json (Tamil) * New translations en.json (Spanish, Argentina) * New translations en.json (Kabyle) * New translations en.json (Spanish, Argentina) * New translations en.json (Ido) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.yml (Polish) * New translations simple_form.en.yml (Polish) * New translations activerecord.en.yml (Polish) * New translations en.json (Korean) * New translations en.json (Spanish) * New translations en.json (Hindi) * New translations en.json (Vietnamese) * New translations activerecord.en.yml (Vietnamese) * New translations en.json (Hindi) * New translations en.json (German) * New translations en.json (German) * New translations en.yml (Esperanto) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Esperanto) * New translations activerecord.en.yml (French) * New translations en.json (French) * New translations en.json (French) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations activerecord.en.yml (Thai) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations activerecord.en.yml (Thai) * New translations en.json (Thai) * New translations activerecord.en.yml (Thai) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations doorkeeper.en.yml (Thai) * New translations simple_form.en.yml (Thai) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 5 +- app/javascript/mastodon/locales/ar.json | 5 +- app/javascript/mastodon/locales/ast.json | 5 +- app/javascript/mastodon/locales/bg.json | 5 +- app/javascript/mastodon/locales/bn.json | 5 +- app/javascript/mastodon/locales/br.json | 5 +- app/javascript/mastodon/locales/ca.json | 5 +- app/javascript/mastodon/locales/ckb.json | 5 +- app/javascript/mastodon/locales/co.json | 5 +- app/javascript/mastodon/locales/cs.json | 5 +- app/javascript/mastodon/locales/cy.json | 5 +- app/javascript/mastodon/locales/da.json | 5 +- app/javascript/mastodon/locales/de.json | 21 ++- .../mastodon/locales/defaultMessages.json | 10 +- app/javascript/mastodon/locales/el.json | 5 +- app/javascript/mastodon/locales/en-GB.json | 5 +- app/javascript/mastodon/locales/en.json | 2 + app/javascript/mastodon/locales/eo.json | 7 +- app/javascript/mastodon/locales/es-AR.json | 5 +- app/javascript/mastodon/locales/es-MX.json | 9 +- app/javascript/mastodon/locales/es.json | 5 +- app/javascript/mastodon/locales/et.json | 5 +- app/javascript/mastodon/locales/eu.json | 5 +- app/javascript/mastodon/locales/fa.json | 5 +- app/javascript/mastodon/locales/fi.json | 5 +- app/javascript/mastodon/locales/fr.json | 7 +- app/javascript/mastodon/locales/fy.json | 5 +- app/javascript/mastodon/locales/ga.json | 5 +- app/javascript/mastodon/locales/gd.json | 5 +- app/javascript/mastodon/locales/gl.json | 5 +- app/javascript/mastodon/locales/he.json | 85 +++++----- app/javascript/mastodon/locales/hi.json | 35 ++-- app/javascript/mastodon/locales/hr.json | 5 +- app/javascript/mastodon/locales/hu.json | 5 +- app/javascript/mastodon/locales/hy.json | 5 +- app/javascript/mastodon/locales/id.json | 9 +- app/javascript/mastodon/locales/io.json | 5 +- app/javascript/mastodon/locales/is.json | 5 +- app/javascript/mastodon/locales/it.json | 7 +- app/javascript/mastodon/locales/ja.json | 5 +- app/javascript/mastodon/locales/ka.json | 5 +- app/javascript/mastodon/locales/kab.json | 7 +- app/javascript/mastodon/locales/kk.json | 5 +- app/javascript/mastodon/locales/kn.json | 5 +- app/javascript/mastodon/locales/ko.json | 5 +- app/javascript/mastodon/locales/ku.json | 5 +- app/javascript/mastodon/locales/kw.json | 5 +- app/javascript/mastodon/locales/lt.json | 5 +- app/javascript/mastodon/locales/lv.json | 5 +- app/javascript/mastodon/locales/mk.json | 5 +- app/javascript/mastodon/locales/ml.json | 5 +- app/javascript/mastodon/locales/mr.json | 5 +- app/javascript/mastodon/locales/ms.json | 5 +- app/javascript/mastodon/locales/nl.json | 5 +- app/javascript/mastodon/locales/nn.json | 5 +- app/javascript/mastodon/locales/no.json | 5 +- app/javascript/mastodon/locales/oc.json | 5 +- app/javascript/mastodon/locales/pa.json | 5 +- app/javascript/mastodon/locales/pl.json | 7 +- app/javascript/mastodon/locales/pt-BR.json | 5 +- app/javascript/mastodon/locales/pt-PT.json | 7 +- app/javascript/mastodon/locales/ro.json | 5 +- app/javascript/mastodon/locales/ru.json | 5 +- app/javascript/mastodon/locales/sa.json | 5 +- app/javascript/mastodon/locales/sc.json | 5 +- app/javascript/mastodon/locales/si.json | 5 +- app/javascript/mastodon/locales/sk.json | 9 +- app/javascript/mastodon/locales/sl.json | 5 +- app/javascript/mastodon/locales/sq.json | 5 +- app/javascript/mastodon/locales/sr-Latn.json | 5 +- app/javascript/mastodon/locales/sr.json | 5 +- app/javascript/mastodon/locales/sv.json | 7 +- app/javascript/mastodon/locales/szl.json | 5 +- app/javascript/mastodon/locales/ta.json | 7 +- app/javascript/mastodon/locales/tai.json | 5 +- app/javascript/mastodon/locales/te.json | 5 +- app/javascript/mastodon/locales/th.json | 11 +- app/javascript/mastodon/locales/tr.json | 7 +- app/javascript/mastodon/locales/tt.json | 5 +- app/javascript/mastodon/locales/ug.json | 5 +- app/javascript/mastodon/locales/uk.json | 5 +- app/javascript/mastodon/locales/ur.json | 5 +- app/javascript/mastodon/locales/vi.json | 5 +- app/javascript/mastodon/locales/zgh.json | 5 +- app/javascript/mastodon/locales/zh-CN.json | 7 +- app/javascript/mastodon/locales/zh-HK.json | 5 +- app/javascript/mastodon/locales/zh-TW.json | 5 +- config/locales/activerecord.fr.yml | 2 + config/locales/activerecord.he.yml | 19 +++ config/locales/activerecord.pl.yml | 2 + config/locales/activerecord.th.yml | 6 +- config/locales/activerecord.tr.yml | 2 + config/locales/activerecord.vi.yml | 2 + config/locales/activerecord.zh-CN.yml | 11 +- config/locales/devise.he.yml | 5 + config/locales/doorkeeper.th.yml | 18 +- config/locales/eo.yml | 2 +- config/locales/he.yml | 159 +++++++++++++++--- config/locales/id.yml | 5 + config/locales/ja.yml | 26 +++ config/locales/pl.yml | 9 + config/locales/simple_form.he.yml | 41 ++++- config/locales/simple_form.ja.yml | 13 ++ config/locales/simple_form.pl.yml | 5 + config/locales/simple_form.th.yml | 26 +-- config/locales/simple_form.tr.yml | 1 + config/locales/th.yml | 43 +++-- config/locales/zh-CN.yml | 21 +++ 108 files changed, 777 insertions(+), 242 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 9e84a1bd7..942c8191f 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index d3f49b82f..13d6e4e7a 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "أي كان مِن هذه", "hashtag.column_settings.tag_mode.none": "لا شيء مِن هذه", "hashtag.column_settings.tag_toggle": "إدراج الوسوم الإضافية لهذا العمود", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "الأساسية", "home.column_settings.show_reblogs": "اعرض الترقيات", "home.column_settings.show_replies": "اعرض الردود", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "المتابِعون", "timeline_hint.resources.follows": "المتابَعون", "timeline_hint.resources.statuses": "المنشورات القديمة", - "trends.counter_by_accounts": "{count,plural,zero{} one{{counter} شخص} two{{counter} شخصين} few{{counter} أشخاص } many{{counter} شخص} other{{counter} شخص}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "المتداولة الآن", "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.", "units.short.billion": "{count} مليار", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 16fa5e1b6..034885e81 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cualesquiera d'estes", "hashtag.column_settings.tag_mode.none": "Nenguna d'estes", "hashtag.column_settings.tag_toggle": "Incluyir les etiquetes adicionales d'esta columna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Amosar rempuestes", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "En tendencia", "ui.beforeunload": "El borrador va perdese si coles de Mastodon.", "units.short.billion": "{count} B", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 18d95b5dd..89f2efc85 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Някое от тези", "hashtag.column_settings.tag_mode.none": "Никое от тези", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Показване на споделяния", "home.column_settings.show_replies": "Показване на отговори", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Последователи", "timeline_hint.resources.follows": "Последвани", "timeline_hint.resources.statuses": "По-стари публикации", - "trends.counter_by_accounts": "{count, plural, one {{counter} човек} other {{counter} човека}} говорят", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Налагащи се сега", "ui.beforeunload": "Черновата ви ще бъде загубена, ако излезете от Mastodon.", "units.short.billion": "{count}млрд", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 34d650234..852c4c720 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "এর ভেতরে যেকোনোটা", "hashtag.column_settings.tag_mode.none": "এগুলোর একটাও না", "hashtag.column_settings.tag_toggle": "আরো ট্যাগ এই কলামে যুক্ত করতে", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "সাধারণ", "home.column_settings.show_reblogs": "সমর্থনগুলো দেখান", "home.column_settings.show_replies": "মতামত দেখান", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "অনুসরকারীরা", "timeline_hint.resources.follows": "অনুসরণ করে", "timeline_hint.resources.statuses": "পুরনো টুটগুলি", - "trends.counter_by_accounts": "{count, plural,one {{counter} জন ব্যক্তি} other {{counter} জন লোক}} কথা বলছে", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "বর্তমানে জনপ্রিয়", "ui.beforeunload": "যে পর্যন্ত এটা লেখা হয়েছে, মাস্টাডন থেকে চলে গেলে এটা মুছে যাবে।", "units.short.billion": "{count}বিলিয়ন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 14a55e420..ac504c49c 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Unan e mesk anezho", "hashtag.column_settings.tag_mode.none": "Hini ebet anezho", "hashtag.column_settings.tag_toggle": "Endelc'her gerioù-alc'hwez ouzhpenn evit ar bannad-mañ", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Diazez", "home.column_settings.show_reblogs": "Diskouez ar skignadennoù", "home.column_settings.show_replies": "Diskouez ar respontoù", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Heulier·ezed·ien", "timeline_hint.resources.follows": "Heuliañ", "timeline_hint.resources.statuses": "Toudoù koshoc'h", - "trends.counter_by_accounts": "{count, plural, one {{counter} den} other {{counter} a zud}} a zo o komz", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Luskad ar mare", "ui.beforeunload": "Kollet e vo ho prell ma kuitit Mastodon.", "units.short.billion": "{count}miliard", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 2e3520fed..bc6029fe0 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Qualsevol d’aquests", "hashtag.column_settings.tag_mode.none": "Cap d’aquests", "hashtag.column_settings.tag_toggle": "Inclou etiquetes addicionals per a aquesta columna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bàsic", "home.column_settings.show_reblogs": "Mostra els impulsos", "home.column_settings.show_replies": "Mostra les respostes", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Seguiments", "timeline_hint.resources.statuses": "Publicacions més antigues", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persones}} parlant-ne", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "En tendència", "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 223b0d417..80c5089ae 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "هەر کام لەمانە", "hashtag.column_settings.tag_mode.none": "هیچ کام لەمانە", "hashtag.column_settings.tag_toggle": "تاگی زیادە ی ئەم ستوونە لەخۆ بنووسە", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "بنەڕەتی", "home.column_settings.show_reblogs": "پیشاندانی بەهێزکردن", "home.column_settings.show_replies": "وەڵامدانەوەکان پیشان بدە", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "شوێنکەوتوو", "timeline_hint.resources.follows": "شوێنکەوتن", "timeline_hint.resources.statuses": "نێردراوی کۆن", - "trends.counter_by_accounts": "{count, plural, one {{counter} کەس} other {{counter} کەس}} گفتوگۆ دەکا", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "ڕۆژەڤ", "ui.beforeunload": "ڕەشنووسەکەت لەدەست دەچێت ئەگەر ماستۆدۆن جێ بهێڵیت.", "units.short.billion": "{count} ملیار", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 9dd6f1a48..2dbc256ee 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Unu di quessi", "hashtag.column_settings.tag_mode.none": "Nisunu di quessi", "hashtag.column_settings.tag_toggle": "Inchjude tag addiziunali per sta colonna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bàsichi", "home.column_settings.show_reblogs": "Vede e spartere", "home.column_settings.show_replies": "Vede e risposte", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Abbunati", "timeline_hint.resources.follows": "Abbunamenti", "timeline_hint.resources.statuses": "Statuti più anziani", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona chì parla} other {{counter} persone chì parlanu}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Tindenze d'avà", "ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Mastodon.", "units.short.billion": "{count}G", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index e7d6eb87b..2f667eae6 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Jakékoliv z těchto", "hashtag.column_settings.tag_mode.none": "Žádné z těchto", "hashtag.column_settings.tag_toggle": "Zahrnout v tomto sloupci dodatečné tagy", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Základní", "home.column_settings.show_reblogs": "Zobrazit boosty", "home.column_settings.show_replies": "Zobrazit odpovědi", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sledující", "timeline_hint.resources.follows": "Sledovaní", "timeline_hint.resources.statuses": "Starší příspěvky", - "trends.counter_by_accounts": "zmiňuje {count, plural, one {{counter} člověk} few {{counter} lidé} many {{counter} lidí} other {{counter} lidí}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Právě populární", "ui.beforeunload": "Pokud Mastodon opustíte, váš koncept se ztratí.", "units.short.billion": "{count} mld.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 3a18db095..228fd280f 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Unrhyw un o'r rhain", "hashtag.column_settings.tag_mode.none": "Dim o'r rhain", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Syml", "home.column_settings.show_reblogs": "Dangos hybiau", "home.column_settings.show_replies": "Dangos ymatebion", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Dilynwyr", "timeline_hint.resources.follows": "Yn dilyn", "timeline_hint.resources.statuses": "Postiadau hŷn", - "trends.counter_by_accounts": "{count, plural, one {{counter} berson} other {{counter} o bobl}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Yn tueddu nawr", "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.", "units.short.billion": "{count}biliwn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index fab1f2075..0898b9081 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Nogle af disse", "hashtag.column_settings.tag_mode.none": "Ingen af disse", "hashtag.column_settings.tag_toggle": "Inkludér ekstra tags for denne kolonne", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Samlet volumen {days, plural, one {den seneste dag} other {de seneste {days} dage}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Grundlæggende", "home.column_settings.show_reblogs": "Vis boosts", "home.column_settings.show_replies": "Vis svar", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Følgere", "timeline_hint.resources.follows": "Følger", "timeline_hint.resources.statuses": "Ældre indlæg", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} taler", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} {days, plural, one {den seneste dag} other {de seneste {days} dage}}", "trends.trending_now": "Hot lige nu", "ui.beforeunload": "Dit udkast går tabt, hvis du lukker Mastodon.", "units.short.billion": "{count} mia.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index ee6c7cfda..f2ec638c7 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Eins von diesen", "hashtag.column_settings.tag_mode.none": "Keins von diesen", "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Gesamtes Aufkommen {days, plural, one {am letzten Tag} other {in den letzten {days} Tagen}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Einfach", "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen", "home.column_settings.show_replies": "Antworten anzeigen", @@ -314,7 +317,7 @@ "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.security": "Sicherheit", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{target} wurde von {name} gemeldet", "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.follow": "{name} folgt dir", @@ -327,7 +330,7 @@ "notification.update": "{name} bearbeitete einen Beitrag", "notifications.clear": "Mitteilungen löschen", "notifications.clear_confirmation": "Bist du dir sicher, dass du alle Mitteilungen löschen möchtest?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Neue Meldungen:", "notifications.column_settings.admin.sign_up": "Neue Anmeldungen:", "notifications.column_settings.alert": "Desktop-Benachrichtigungen", "notifications.column_settings.favourite": "Favorisierungen:", @@ -433,11 +436,11 @@ "report.thanks.title_actionable": "Vielen Dank für die Meldung, wir werden uns das ansehen.", "report.unfollow": "@{name} entfolgen", "report.unfollow_explanation": "Du folgst diesem Konto. Um die Beiträge nicht mehr auf deiner Startseite zu sehen, entfolge dem Konto.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.attached_statuses": "{count, plural, one {{count} angehangener Beitrag} other {{count} angehängte Beiträge}}", + "report_notification.categories.other": "Nicht Aufgelistet", "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.categories.violation": "Regelbruch", + "report_notification.open": "Meldung öffnen", "search.placeholder": "Suche", "search_popout.search_format": "Fortgeschrittenes Suchformat", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", @@ -468,7 +471,7 @@ "status.embed": "Einbetten", "status.favourite": "Favorisieren", "status.filtered": "Gefiltert", - "status.hide": "Hide toot", + "status.hide": "Tröt verbergen", "status.history.created": "{name} erstellte {date}", "status.history.edited": "{name} bearbeitete {date}", "status.load_more": "Weitere laden", @@ -492,7 +495,7 @@ "status.report": "@{name} melden", "status.sensitive_warning": "NSFW", "status.share": "Teilen", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Trotzdem anzeigen", "status.show_less": "Weniger anzeigen", "status.show_less_all": "Alle Inhaltswarnungen zuklappen", "status.show_more": "Mehr anzeigen", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Follower", "timeline_hint.resources.follows": "Folgt", "timeline_hint.resources.statuses": "Ältere Beiträge", - "trends.counter_by_accounts": "{count, plural, one {{counter} Person redet darüber} other {{counter} Personen reden darüber}}", + "trends.counter_by_accounts": "{count, plural, one {{count} Person} other {{count} Personen}} {days, plural, one {am vergangenen Tag} other {in den vergangenen {days} Tagen}}", "trends.trending_now": "In den Trends", "ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index d86cddc9b..908396348 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -2124,6 +2124,14 @@ }, { "descriptors": [ + { + "defaultMessage": "Follow hashtag", + "id": "hashtag.follow" + }, + { + "defaultMessage": "Unfollow hashtag", + "id": "hashtag.unfollow" + }, { "defaultMessage": "or {additional}", "id": "hashtag.column_header.tag_mode.any" @@ -3756,4 +3764,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] +] \ No newline at end of file diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 3240b682a..3cfce1647 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Οποιοδήποτε από αυτά", "hashtag.column_settings.tag_mode.none": "Κανένα από αυτά", "hashtag.column_settings.tag_toggle": "Προσθήκη επιπλέον ταμπελών για την κολώνα", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Συνολικός όγκος κατά την τελευταία {days, plural, one {ημέρα} other {{days} ημέρες}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Βασικές ρυθμίσεις", "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Ακόλουθοι", "timeline_hint.resources.follows": "Ακολουθεί", "timeline_hint.resources.statuses": "Παλαιότερα τουτ", - "trends.counter_by_accounts": "{count, plural, one {{counter} άτομο μιλάει} other {{counter} άτομα μιλάνε}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} άτομο} other {{counter} άνθρωποι}} στο παρελθόν {days, plural, one {ημέρα} other {{days} ημέρες}}", "trends.trending_now": "Δημοφιλή τώρα", "ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Mastodon.", "units.short.billion": "{count}Δ", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 561f1088b..535c5852a 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index c668cefc6..ed7ea2992 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -220,7 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags for this column", + "hashtag.follow": "Follow hashtag", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 3e2475f20..67872ff0a 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -123,7 +123,7 @@ "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun mesaĝon?", "confirmations.delete_list.confirm": "Forigi", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", - "confirmations.discard_edit_media.confirm": "Forlasi", + "confirmations.discard_edit_media.confirm": "Forĵeti", "confirmations.discard_edit_media.message": "Vi havas nekonservitajn ŝanĝojn de la priskribo aŭ de la antaŭmontro de la aŭdovidaĵo, ĉu vi forlasu ilin ĉiuokaze?", "confirmations.domain_block.confirm": "Bloki la tutan domajnon", "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Iu ajn", "hashtag.column_settings.tag_mode.none": "Neniu", "hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bazaj agordoj", "home.column_settings.show_reblogs": "Montri plusendojn", "home.column_settings.show_replies": "Montri respondojn", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sekvantoj", "timeline_hint.resources.follows": "Sekvatoj", "timeline_hint.resources.statuses": "Pli malnovaj mesaĝoj", - "trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personoj}} parolante", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Nunaj furoraĵoj", "ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 2c967ccdf..0eeb6e1ff 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estas", "hashtag.column_settings.tag_mode.none": "Ninguna de estas", "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionales para esta columna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volumen total en el/los último/s {days, plural, one {día} other {{days} días}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar adhesiones", "home.column_settings.show_replies": "Mostrar respuestas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Tus seguidores", "timeline_hint.resources.follows": "Las cuentas que seguís", "timeline_hint.resources.statuses": "Mensajes más antiguos", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} hablando", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} en el/los pasado/s {days, plural, one {día} other {{days} días}}", "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si abandonás Mastodon.", "units.short.billion": "{count}MM", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 0923a0734..23a8d7247 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", @@ -468,7 +471,7 @@ "status.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", - "status.hide": "Hide toot", + "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", "status.history.edited": "{name} editado {date}", "status.load_more": "Cargar más", @@ -492,7 +495,7 @@ "status.report": "Reportar", "status.sensitive_warning": "Contenido sensible", "status.share": "Compartir", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostrar de todos modos", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Seguidos", "timeline_hint.resources.statuses": "Toots más antiguos", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} hablando", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.", "units.short.billion": "{count} MM", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 4e30f7b71..0ca847b35 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volumen total en los últimos {days, plural, one {día} other {{days} días}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Seguidos", "timeline_hint.resources.statuses": "Publicaciones más antiguas", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} hablando", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} en los últimos {days, plural, one {días} other {{days} días}}", "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.", "units.short.billion": "{count} MM", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 2f2d29b8d..2b6594b87 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Mõni neist", "hashtag.column_settings.tag_mode.none": "Mitte ükski neist", "hashtag.column_settings.tag_toggle": "Kaasa lisamärked selle tulba jaoks", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Peamine", "home.column_settings.show_reblogs": "Näita upitusi", "home.column_settings.show_replies": "Näita vastuseid", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Hetkel populaarne", "ui.beforeunload": "Teie mustand läheb kaotsi, kui lahkute Mastodonist.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 618b8265f..44ab5f80e 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Hautako edozein", "hashtag.column_settings.tag_mode.none": "Hauetako bat ere ez", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Oinarrizkoa", "home.column_settings.show_reblogs": "Erakutsi bultzadak", "home.column_settings.show_replies": "Erakutsi erantzunak", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Jarraitzaileak", "timeline_hint.resources.follows": "Jarraitzen", "timeline_hint.resources.statuses": "Bidalketa zaharragoak", - "trends.counter_by_accounts": "{count, plural, one {Pertsona {counter}} other {{counter} pertsona}} hizketan", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Joera orain", "ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 99621747e..977b0aa74 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "هرکدام از این‌ها", "hashtag.column_settings.tag_mode.none": "هیچ‌کدام از این‌ها", "hashtag.column_settings.tag_toggle": "افزودن برچسب‌هایی بیشتر به این ستون", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "پایه‌ای", "home.column_settings.show_reblogs": "نمایش تقویت‌ها", "home.column_settings.show_replies": "نمایش پاسخ‌ها", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "پیگیرندگان", "timeline_hint.resources.follows": "پی‌گرفتگان", "timeline_hint.resources.statuses": "فرسته‌های قدیمی‌تر", - "trends.counter_by_accounts": "{count, plural, one {{counter} نفر} other {{counter} نفر}} صحبت می‌کنند", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "پرطرفدار", "ui.beforeunload": "اگر از ماستودون خارج شوید پیش‌نویس شما از دست خواهد رفت.", "units.short.billion": "{count}میلیارد", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index a423d1f02..faa322df9 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Mikä tahansa näistä", "hashtag.column_settings.tag_mode.none": "Ei mitään näistä", "hashtag.column_settings.tag_toggle": "Sisällytä lisätunnisteet tähän sarakkeeseen", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Perusasetukset", "home.column_settings.show_reblogs": "Näytä buustaukset", "home.column_settings.show_replies": "Näytä vastaukset", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seuraajat", "timeline_hint.resources.follows": "Seuraa", "timeline_hint.resources.statuses": "Vanhemmat julkaisut", - "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} puhuu", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Suosittua nyt", "ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.", "units.short.billion": "{count} mrd.", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index e0a9cb42d..18b889e9b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Au moins un de ces éléments", "hashtag.column_settings.tag_mode.none": "Aucun de ces éléments", "hashtag.column_settings.tag_toggle": "Inclure des hashtags additionnels pour cette colonne", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volume total {days, plural, one {des dernières 24h} other {des {days} derniers jours}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basique", "home.column_settings.show_reblogs": "Afficher les partages", "home.column_settings.show_replies": "Afficher les réponses", @@ -433,7 +436,7 @@ "report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.", "report.unfollow": "Ne plus suivre @{name}", "report.unfollow_explanation": "Vous suivez ce compte. Désabonnez-vous pour ne plus en voir les messages sur votre fil principal.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.attached_statuses": "{count, plural, one {{count} message lié} other {{count} messages liés}}", "report_notification.categories.other": "Autre", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Infraction aux règles du serveur", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Les abonnés", "timeline_hint.resources.follows": "Les abonnements", "timeline_hint.resources.statuses": "Messages plus anciens", - "trends.counter_by_accounts": "{count, plural, one {{counter} personne en parle} other {{counter} personnes en parlent}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} personne} other {{counter} personnes}} au cours {days, plural, one {des dernières 24h} other {des {days} derniers jours}}", "trends.trending_now": "Tendance en ce moment", "ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index dd361b995..ea5a61cdc 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Folgers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Aldere berjochten", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoan is} other {{counter} persoanen binne}} yn petear", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index f036e9b08..1dd7e635f 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Taispeáin treisithe", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Leantóirí", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index a0127c578..f7ffe0d87 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Gin sam bith dhiubh", "hashtag.column_settings.tag_mode.none": "Às aonais gin sam bith dhiubh", "hashtag.column_settings.tag_toggle": "Gabh a-steach barrachd tagaichean sa cholbh seo", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bunasach", "home.column_settings.show_reblogs": "Seall na brosnachaidhean", "home.column_settings.show_replies": "Seall na freagairtean", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Luchd-leantainn", "timeline_hint.resources.follows": "A’ leantainn air", "timeline_hint.resources.statuses": "Postaichean nas sine", - "trends.counter_by_accounts": "{count, plural, one {Tha {counter} neach} two {Tha {counter} neach} few {Tha {counter} daoine} other {Tha {counter} duine}} a’ bruidhinn", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "A’ treandadh an-dràsta", "ui.beforeunload": "Caillidh tu an dreachd agad ma dh’fhàgas tu Mastodon an-dràsta.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c11db8a65..56ceb54e8 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Calquera destes", "hashtag.column_settings.tag_mode.none": "Ningún destes", "hashtag.column_settings.tag_toggle": "Incluír cancelos adicionais para esta columna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Cantidade total {days, plural, one {no último día} other {nos {days} últimos días}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Amosar compartidos", "home.column_settings.show_replies": "Amosar respostas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidoras", "timeline_hint.resources.follows": "Seguindo", "timeline_hint.resources.statuses": "Publicacións antigas", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} comentando", + "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} nos últimos {days, plural, one {día} other {{days} días}}", "trends.trending_now": "Tendencias actuais", "ui.beforeunload": "O borrador perderase se saes de Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 5d71113e4..4cb3380b4 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -5,7 +5,7 @@ "account.badges.group": "קבוצה", "account.block": "חסמי את @{name}", "account.block_domain": "חסמו את קהילת {domain}", - "account.blocked": "חסום", + "account.blocked": "לחסום", "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי", "account.cancel_follow_request": "בטל בקשת מעקב", "account.direct": "הודעה ישירה ל@{name}", @@ -38,7 +38,7 @@ "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב", "account.share": "שתף את הפרופיל של @{name}", "account.show_reblogs": "הצג הדהודים מאת @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.statuses_counter": "{count, plural, one {{counter} פוסט} two {{counter} פוסטים} many {{counter} פוסטים} other {{counter} פוסטים}}", "account.unblock": "הסר את החסימה של @{name}", "account.unblock_domain": "הסירי את החסימה של קהילת {domain}", "account.unblock_short": "הסר חסימה", @@ -77,7 +77,7 @@ "column.follow_requests": "בקשות מעקב", "column.home": "פיד הבית", "column.lists": "רשימות", - "column.mutes": "השתקות", + "column.mutes": "משתמשים בהשתקה", "column.notifications": "התראות", "column.pins": "פווסטים נעוצים", "column.public": "פיד כללי (כל השרתים)", @@ -99,7 +99,7 @@ "compose_form.hashtag_warning": "פוסט זה לא יירשם תחת תגי הקבצה (האשטאגים) היות והנראות שלו היא 'לא רשום'. רק פוסטים ציבוריים יכולים להימצא באמצעות תגי הקבצה.", "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.", "compose_form.lock_disclaimer.lock": "נעול", - "compose_form.placeholder": "מה עובר לך בראש?", + "compose_form.placeholder": "על מה את/ה חושב/ת ?", "compose_form.poll.add_option": "הוסיפו בחירה", "compose_form.poll.duration": "משך הסקר", "compose_form.poll.option_placeholder": "אפשרות מספר {number}", @@ -131,12 +131,12 @@ "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?", "confirmations.mute.confirm": "להשתיק", "confirmations.mute.explanation": "זה יסתיר פוסטים שלהם ופוסטים שמאזכרים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.", - "confirmations.mute.message": "להשתיק את {name}?", - "confirmations.redraft.confirm": "מחק וערוך מחדש", + "confirmations.mute.message": "בטוח/ה שברצונך להשתיק את {name}?", + "confirmations.redraft.confirm": "מחיקה ועריכה מחדש", "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות לפוסט המקורי ישארו יתומות.", - "confirmations.reply.confirm": "הגב", + "confirmations.reply.confirm": "תגובה", "confirmations.reply.message": "תגובה עכשיו תדרוס את ההודעה שכבר התחלתים לכתוב. האם אתם בטוחים שברצונכם להמשיך?", - "confirmations.unfollow.confirm": "להפסיק מעקב", + "confirmations.unfollow.confirm": "הפסקת מעקב", "confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?", "conversation.delete": "מחיקת שיחה", "conversation.mark_as_read": "סמן כנקרא", @@ -146,17 +146,17 @@ "directory.local": "מ- {domain} בלבד", "directory.new_arrivals": "חדשים כאן", "directory.recently_active": "פעילים לאחרונה", - "embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.", + "embed.instructions": "ניתן להטמיע את הפוסט הזה באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", "emoji_button.activity": "פעילות", "emoji_button.clear": "ניקוי", - "emoji_button.custom": "מיוחדים", + "emoji_button.custom": "בהתאמה אישית", "emoji_button.flags": "דגלים", "emoji_button.food": "אוכל ושתיה", "emoji_button.label": "הוספת אמוג'י", "emoji_button.nature": "טבע", - "emoji_button.not_found": "רגישון לא נמצא!! (╯°□°)╯︵ ┻━┻", - "emoji_button.objects": "חפצים", + "emoji_button.not_found": "לא נמצאו סמלונים מתאימים", + "emoji_button.objects": "אובייקטים", "emoji_button.people": "אנשים", "emoji_button.recent": "בשימוש תדיר", "emoji_button.search": "חיפוש...", @@ -167,7 +167,7 @@ "empty_column.account_timeline": "אין עדיין אף פוסט!", "empty_column.account_unavailable": "פרופיל לא זמין", "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", - "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", + "empty_column.bookmarked_statuses": "אין עדיין פוסטים שחיבבת. כשתחבב את הראשון, הוא יופיע כאן.", "empty_column.community": "פיד השרת המקומי ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", "empty_column.direct": "אין לך שום הודעות פרטיות עדיין. כשתשלחו או תקבלו אחת, היא תופיע כאן.", "empty_column.domain_blocks": "אין עדיין קהילות מוסתרות.", @@ -177,7 +177,7 @@ "empty_column.follow_recommendations": "נראה שלא ניתן לייצר המלצות עבורך. נסה/י להשתמש בחיפוש כדי למצוא אנשים מוכרים או לבדוק את הנושאים החמים.", "empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.", "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.", - "empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים. {suggestions}", + "empty_column.home": "פיד הבית ריק ! אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר משתמשים/ות אחרים/ות. {suggestions}", "empty_column.home.suggestions": "ראה/י כמה הצעות", "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו פוסטים חדשים, הם יופיעו פה.", "empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "כל אלה", "hashtag.column_settings.tag_mode.none": "אף אחד מאלה", "hashtag.column_settings.tag_toggle": "כלול תגיות נוספות בטור זה", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "למתחילים", "home.column_settings.show_reblogs": "הצגת הדהודים", "home.column_settings.show_replies": "הצגת תגובות", @@ -240,10 +243,10 @@ "keyboard_shortcuts.favourite": "לחבב", "keyboard_shortcuts.favourites": "פתיחת רשימת מועדפים", "keyboard_shortcuts.federated": "פתיחת ציר זמן בין-קהילתי", - "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.heading": "מקשי קיצור במקלדת", "keyboard_shortcuts.home": "פתיחת ציר זמן אישי", "keyboard_shortcuts.hotkey": "מקש קיצור", - "keyboard_shortcuts.legend": "להציג את הפירוש", + "keyboard_shortcuts.legend": "הצגת מקרא", "keyboard_shortcuts.local": "פתיחת ציר זמן קהילתי", "keyboard_shortcuts.mention": "לאזכר את המחבר(ת)", "keyboard_shortcuts.muted": "פתיחת רשימת משתמשים מושתקים", @@ -252,11 +255,11 @@ "keyboard_shortcuts.open_media": "פתיחת מדיה", "keyboard_shortcuts.pinned": "פתיחת רשימת חצרותים מוצמדים", "keyboard_shortcuts.profile": "פתח את פרופיל המשתמש", - "keyboard_shortcuts.reply": "לענות", + "keyboard_shortcuts.reply": "תגובה לפוסט", "keyboard_shortcuts.requests": "פתיחת רשימת בקשות מעקב", "keyboard_shortcuts.search": "להתמקד בחלון החיפוש", "keyboard_shortcuts.spoilers": "הצגת/הסתרת שדה אזהרת תוכן (CW)", - "keyboard_shortcuts.start": "to open \"get started\" column", + "keyboard_shortcuts.start": "לפתוח את הטור \"בואו נתחיל\"", "keyboard_shortcuts.toggle_hidden": "הצגת/הסתרת טקסט מוסתר מאחורי אזהרת תוכן", "keyboard_shortcuts.toggle_sensitivity": "הצגת/הסתרת מדיה", "keyboard_shortcuts.toot": "להתחיל פוסט חדש", @@ -265,7 +268,7 @@ "lightbox.close": "סגירה", "lightbox.compress": "דחיסת קופסת צפייה בתמונה", "lightbox.expand": "הרחבת קופסת צפייה בתמונה", - "lightbox.next": "הלאה", + "lightbox.next": "הבא", "lightbox.previous": "הקודם", "limited_account_hint.action": "הצג חשבון בכל זאת", "limited_account_hint.title": "פרופיל זה הוסתר ע\"י מנהלי השרת שלך.", @@ -284,7 +287,7 @@ "lists.subheading": "הרשימות שלך", "load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}", "loading_indicator.label": "טוען...", - "media_gallery.toggle_visible": "נראה\\בלתי נראה", + "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {Hide images} many {להסתיר תמונות} other {Hide תמונות}}", "missing_indicator.label": "לא נמצא", "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב", "mute_modal.duration": "משך הזמן", @@ -308,15 +311,15 @@ "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת", "navigation_bar.lists": "רשימות", "navigation_bar.logout": "התנתקות", - "navigation_bar.mutes": "השתקות", + "navigation_bar.mutes": "משתמשים בהשתקה", "navigation_bar.personal": "אישי", "navigation_bar.pins": "פוסטים נעוצים", "navigation_bar.preferences": "העדפות", - "navigation_bar.public_timeline": "ציר זמן בין-קהילתי", + "navigation_bar.public_timeline": "פיד כללי (כל השרתים)", "navigation_bar.security": "אבטחה", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} דיווח.ה על {target}", "notification.admin.sign_up": "{name} נרשמו", - "notification.favourite": "חצרוצך חובב על ידי {name}", + "notification.favourite": "{name} חיבב/ה את הפוסט שלך", "notification.follow": "{name} במעקב אחרייך", "notification.follow_request": "{name} ביקשו לעקוב אחריך", "notification.mention": "אוזכרת על ידי {name}", @@ -326,8 +329,8 @@ "notification.status": "{name} הרגע פרסמו", "notification.update": "{name} ערכו פוסט", "notifications.clear": "הסרת התראות", - "notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.clear_confirmation": "להסיר את כל ההתראות לצמיתות ? ", + "notifications.column_settings.admin.report": "דו\"חות חדשים", "notifications.column_settings.admin.sign_up": "הרשמות חדשות:", "notifications.column_settings.alert": "התראות לשולחן העבודה", "notifications.column_settings.favourite": "מחובבים:", @@ -338,7 +341,7 @@ "notifications.column_settings.follow_request": "בקשות מעקב חדשות:", "notifications.column_settings.mention": "פניות:", "notifications.column_settings.poll": "תוצאות סקר:", - "notifications.column_settings.push": "הודעות בדחיפה", + "notifications.column_settings.push": "התראות בדחיפה", "notifications.column_settings.reblog": "הדהודים:", "notifications.column_settings.show": "הצגה בטור", "notifications.column_settings.sound": "שמע מופעל", @@ -433,24 +436,24 @@ "report.thanks.title_actionable": "תודה על הדיווח, נבדוק את העניין.", "report.unfollow": "הפסיקו לעקוב אחרי @{name}", "report.unfollow_explanation": "אתם עוקבים אחרי החשבון הזה. כדי להפסיק לראות את הפרסומים שלו בפיד הבית שלכם, הפסיקו לעקוב אחריהם.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "{count, plural, one {{count} פוסט} two {{count} posts} many {{count} פוסטים} other {{count} פוסטים}} מצורפים", + "report_notification.categories.other": "שונות", + "report_notification.categories.spam": "ספאם (דואר זבל)", + "report_notification.categories.violation": "הפרת כלל", + "report_notification.open": "פתח דו\"ח", "search.placeholder": "חיפוש", "search_popout.search_format": "מבנה חיפוש מתקדם", - "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.full_text": "טקסט פשוט מחזיר פוסטים שכתבת, חיבבת, הידהדת או שאוזכרת בהם, כמו גם שמות משתמשים, שמות להצגה ותגיות מתאימים.", "search_popout.tips.hashtag": "האשתג", - "search_popout.tips.status": "status", + "search_popout.tips.status": "פוסט", "search_popout.tips.text": "טקסט פשוט מחזיר כינויים, שמות משתמש והאשתגים", "search_popout.tips.user": "משתמש(ת)", "search_results.accounts": "אנשים", "search_results.all": "כל התוצאות", "search_results.hashtags": "האשתגיות", "search_results.nothing_found": "לא נמצא דבר עבור תנאי חיפוש אלה", - "search_results.statuses": "Toots", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.statuses": "פוסטים", + "search_results.statuses_fts_disabled": "חיפוש פוסטים לפי תוכן לא מאופשר בשרת מסטודון זה.", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", "status.admin_account": "פתח/י ממשק ניהול עבור @{name}", "status.admin_status": "Open this status in the moderation interface", @@ -468,7 +471,7 @@ "status.embed": "הטמעה", "status.favourite": "חיבוב", "status.filtered": "סונן", - "status.hide": "Hide toot", + "status.hide": "הסתר פוסט", "status.history.created": "{name} יצר/ה {date}", "status.history.edited": "{name} ערך/ה {date}", "status.load_more": "עוד", @@ -479,7 +482,7 @@ "status.mute_conversation": "השתקת שיחה", "status.open": "הרחבת פוסט זה", "status.pin": "הצמדה לפרופיל שלי", - "status.pinned": "Pinned toot", + "status.pinned": "פוסט נעוץ", "status.read_more": "לקרוא עוד", "status.reblog": "הדהוד", "status.reblog_private": "להדהד ברמת הנראות המקורית", @@ -492,7 +495,7 @@ "status.report": "דיווח על @{name}", "status.sensitive_warning": "תוכן רגיש", "status.share": "שיתוף", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "הראה בכל זאת", "status.show_less": "הראה פחות", "status.show_less_all": "להציג פחות מהכל", "status.show_more": "הראה יותר", @@ -516,8 +519,8 @@ "timeline_hint.remote_resource_not_displayed": "{resource} משרתים אחרים לא מוצגים.", "timeline_hint.resources.followers": "עוקבים", "timeline_hint.resources.follows": "נעקבים", - "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} אחד/ת מדבר/ת} other {{counter} אנשים מדברים}}", + "timeline_hint.resources.statuses": "פוסטים ישנים יותר", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "נושאים חמים", "ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.", "units.short.billion": "{count} מליארד", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 0ff1fc7a1..aa76ebf10 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -92,10 +92,10 @@ "community.column_settings.local_only": "स्थानीय ही", "community.column_settings.media_only": "सिर्फ़ मीडिया", "community.column_settings.remote_only": "केवल सुदूर", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "भाषा बदलें", + "compose.language.search": "भाषाएँ खोजें...", "compose_form.direct_message_warning_learn_more": "और जानें", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "मास्टोडॉन पर पोस्ट एन्ड-टू-एन्ड एन्क्रिप्टेड नहीं है। कोई भी व्यक्तिगत जानकारी मास्टोडॉन पर मत भेजें।", "compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।", "compose_form.lock_disclaimer": "आपका खाता {locked} नहीं है। आपको केवल फॉलोवर्स को दिखाई दिए जाने वाले पोस्ट देखने के लिए कोई भी फॉलो कर सकता है।", "compose_form.lock_disclaimer.lock": "लॉक्ड", @@ -149,7 +149,7 @@ "embed.instructions": "अपने वेबसाइट पर, निचे दिए कोड को कॉपी करके, इस स्टेटस को एम्बेड करें", "embed.preview": "यह ऐसा दिखेगा :", "emoji_button.activity": "गतिविधि", - "emoji_button.clear": "Clear", + "emoji_button.clear": "मिटा दें", "emoji_button.custom": "निजीकृत", "emoji_button.flags": "झंडे", "emoji_button.food": "भोजन एवं पेय", @@ -191,7 +191,7 @@ "errors.unexpected_crash.copy_stacktrace": "स्टैकट्रेस को क्लिपबोर्ड पर कॉपी करें", "errors.unexpected_crash.report_issue": "समस्या सूचित करें", "explore.search_results": "Search results", - "explore.suggested_follows": "For you", + "explore.suggested_follows": "आपके लिए", "explore.title": "Explore", "explore.trending_links": "News", "explore.trending_statuses": "Posts", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "इनमें से कोई भी", "hashtag.column_settings.tag_mode.none": "इनमें से कोई भी नहीं", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "बुनियादी", "home.column_settings.show_reblogs": "बूस्ट दिखाए", "home.column_settings.show_replies": "जवाबों को दिखाए", @@ -387,17 +390,17 @@ "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}h", + "relative_time.full.just_now": "अभी-अभी", + "relative_time.full.minutes": "{number, plural, one {# मिनट} other {# मिनट}} पहले", + "relative_time.full.seconds": "{number, plural, one {# सेकंड} other {# सेकंड}} पहले", + "relative_time.hours": "{number} घंटे", "relative_time.just_now": "अभी", - "relative_time.minutes": "{number}m", - "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.minutes": "{number} मिनट", + "relative_time.seconds": "{number} सेकंड", + "relative_time.today": "आज", "reply_indicator.cancel": "रद्द करें", "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block_explanation": "आपको उनकी पोस्टें नहीं दिखेंगे। वे आपकी पोस्टें को देख नहीं पाएंगे और आपको फ़ॉलो नहीं कर पाएंगे। उन्हे पता लगेगा कि वे blocked हैं।", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", @@ -413,9 +416,9 @@ "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", "report.placeholder": "Type or paste additional comments", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "मुझे यह पसंद नहीं है", "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.other": "कुछ और है।", "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "It's spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 56678d12a..fe0379f0a 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Bilo koji navedeni", "hashtag.column_settings.tag_mode.none": "Nijedan navedeni", "hashtag.column_settings.tag_toggle": "Uključi dodatne oznake za ovaj stupac", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži boostove", "home.column_settings.show_replies": "Pokaži odgovore", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Pratitelji", "timeline_hint.resources.follows": "Praćenja", "timeline_hint.resources.statuses": "Stariji tootovi", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Popularno", "ui.beforeunload": "Vaša skica bit će izgubljena ako napustite Mastodon.", "units.short.billion": "{count} mlrd.", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 4b768de8f..def9348ec 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Bármelyik", "hashtag.column_settings.tag_mode.none": "Egyik sem", "hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Teljes mennyiség az elmúlt {days, plural, one {napban} other {{days} napban}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Alapvető", "home.column_settings.show_reblogs": "Megtolások mutatása", "home.column_settings.show_replies": "Válaszok megjelenítése", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Követő", "timeline_hint.resources.follows": "Követett", "timeline_hint.resources.statuses": "Régi bejegyzések", - "trends.counter_by_accounts": "{count, plural, one {{counter} személy} other {{counter} személy}} beszélget", + "trends.counter_by_accounts": "{count, plural, one {{counter} ember} other {{counter} ember}} az elmúlt {days, plural,one {napban} other {{days} napban}}", "trends.trending_now": "Most felkapott", "ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Mastodont.", "units.short.billion": "{count}Mrd", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 866a6a2cf..9aa8ec4c3 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Ցանկացածը", "hashtag.column_settings.tag_mode.none": "Ոչ մեկը", "hashtag.column_settings.tag_toggle": "Ներառել լրացուցիչ պիտակները այս սիւնակում ", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Հիմնական", "home.column_settings.show_reblogs": "Ցուցադրել տարածածները", "home.column_settings.show_replies": "Ցուցադրել պատասխանները", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Հետեւորդ", "timeline_hint.resources.follows": "Հետեւել", "timeline_hint.resources.statuses": "Հին գրառումներ", - "trends.counter_by_accounts": "{count, plural, one {{counter} մարդ} other {{counter} մարդիկ}} խօսում են", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Այժմ արդիական", "ui.beforeunload": "Քո սեւագիրը կը կորի, եթէ լքես Մաստոդոնը։", "units.short.billion": "{count}մլրդ", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 04fe5213b..effc01737 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -1,9 +1,9 @@ { "account.account_note_header": "Catatan", "account.add_or_remove_from_list": "Tambah atau Hapus dari daftar", - "account.badges.bot": "Bot", + "account.badges.bot": "בוט", "account.badges.group": "Grup", - "account.block": "Blokir @{name}", + "account.block": "{name}לחסום את ", "account.block_domain": "Blokir domain {domain}", "account.blocked": "Terblokir", "account.browse_more_on_origin_server": "Lihat lebih lanjut diprofil asli", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Semua ini", "hashtag.column_settings.tag_mode.none": "Tak satu pun", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Dasar", "home.column_settings.show_reblogs": "Tampilkan boost", "home.column_settings.show_replies": "Tampilkan balasan", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Pengikut", "timeline_hint.resources.follows": "Ikuti", "timeline_hint.resources.statuses": "Toot lama", - "trends.counter_by_accounts": "{count, plural, other {{counter} orang}} berbicara", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Sedang tren sekarang", "ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Mastodon.", "units.short.billion": "{count}M", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index d06045cf8..d54687117 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Irga co", "hashtag.column_settings.tag_mode.none": "Nula co", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Sumo en antea {days, plural,one {dio} other {{days} dii}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Simpla", "home.column_settings.show_reblogs": "Montrar repeti", "home.column_settings.show_replies": "Montrar respondi", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sequanti", "timeline_hint.resources.follows": "Sequati", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personi}} parolas", + "trends.counter_by_accounts": "{count, plural,one {{counter} persono} other {{counter} personi}} en antea {days, plural,one {dio} other {{days} dii}}", "trends.trending_now": "Tendencigas nun", "ui.beforeunload": "Vua skisato perdesos se vu ekiras Mastodon.", "units.short.billion": "{count}G", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index a2714aa4f..e12bfe305 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Hvað sem er af þessu", "hashtag.column_settings.tag_mode.none": "Ekkert af þessu", "hashtag.column_settings.tag_toggle": "Taka með viðbótarmerki fyrir þennan dálk", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Einfalt", "home.column_settings.show_reblogs": "Sýna endurbirtingar", "home.column_settings.show_replies": "Birta svör", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Fylgjendur", "timeline_hint.resources.follows": "Fylgist með", "timeline_hint.resources.statuses": "Eldri færslur", - "trends.counter_by_accounts": "{count, plural, one {{counter} aðili} other {{counter} aðilar}} tala", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Í umræðunni núna", "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index ab8b10e8d..da29dfde1 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Uno o più di questi", "hashtag.column_settings.tag_mode.none": "Nessuno di questi", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volume totale {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Semplice", "home.column_settings.show_reblogs": "Mostra condivisioni", "home.column_settings.show_replies": "Mostra risposte", @@ -513,11 +516,11 @@ "time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} left", "time_remaining.moments": "Restano pochi istanti", "time_remaining.seconds": "{number, plural, one {# secondo} other {# secondi}} left", - "timeline_hint.remote_resource_not_displayed": "{resource] da altri server non sono mostrati.", + "timeline_hint.remote_resource_not_displayed": "{resource} da altri server non sono mostrati.", "timeline_hint.resources.followers": "Follower", "timeline_hint.resources.follows": "Segue", "timeline_hint.resources.statuses": "Post meno recenti", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parlano", + "trends.counter_by_accounts": "{count, plural, one {{count} persona} other {{count} persone}} {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}", "trends.trending_now": "Di tendenza ora", "ui.beforeunload": "La bozza andrà persa se esci da Mastodon.", "units.short.billion": "{count}G", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 430d81c12..35c7d916e 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "いずれかを含む", "hashtag.column_settings.tag_mode.none": "これらを除く", "hashtag.column_settings.tag_toggle": "このカラムに追加のタグを含める", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "基本設定", "home.column_settings.show_reblogs": "ブースト表示", "home.column_settings.show_replies": "返信表示", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "フォロワー", "timeline_hint.resources.follows": "フォロー", "timeline_hint.resources.statuses": "以前の投稿", - "trends.counter_by_accounts": "{counter}人が投稿", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "トレンドタグ", "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 047cdab85..a01b2290c 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "ძირითადი", "home.column_settings.show_reblogs": "ბუსტების ჩვენება", "home.column_settings.show_replies": "პასუხების ჩვენება", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "თქვენი დრაფტი გაუქმდება თუ დატოვებთ მასტოდონს.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 57e6bf0d1..d5ab20008 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -19,7 +19,7 @@ "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.", "account.followers_counter": "{count, plural, one {{count} n umeḍfar} other {{count} n imeḍfaren}}", "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} yeṭṭafaren} aḍfar {{counter} wayeḍ}}", + "account.following_counter": "{count, plural, one {{counter} yeṭṭafaren} other {{counter} wayeḍ}}", "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Yiwen seg-sen", "hashtag.column_settings.tag_mode.none": "Yiwen ala seg-sen", "hashtag.column_settings.tag_toggle": "Glu-d s yihacṭagen imerna i ujgu-agi", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Igejdanen", "home.column_settings.show_reblogs": "Ssken-d beṭṭu", "home.column_settings.show_replies": "Ssken-d tiririyin", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Imeḍfaṛen", "timeline_hint.resources.follows": "T·Yeṭafaṛ", "timeline_hint.resources.statuses": "Tijewwaqin tiqdimin", - "trends.counter_by_accounts": "{count, plural, one {{counter} amdan} imdanen {{counter} wiyaḍ}} yettmeslayen", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeɣ-d deg Maṣṭudun.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index c5459baf3..5334331c4 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Осылардың біреуін", "hashtag.column_settings.tag_mode.none": "Бұлардың ешқайсысын", "hashtag.column_settings.tag_toggle": "Осы бағанға қосымша тегтерді қосыңыз", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Негізгі", "home.column_settings.show_reblogs": "Бөлісулерді көрсету", "home.column_settings.show_replies": "Жауаптарды көрсету", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Оқырман", "timeline_hint.resources.follows": "Жазылым", "timeline_hint.resources.statuses": "Ескі посттары", - "trends.counter_by_accounts": "{count, plural, one {{counter} адам} other {{counter} адам}} айтып жатыр", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Тренд тақырыптар", "ui.beforeunload": "Mastodon желісінен шықсаңыз, нобайыңыз сақталмайды.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 3e0649ba1..bde13c04c 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index c07948a73..30cf08ff2 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "아무것이든", "hashtag.column_settings.tag_mode.none": "이것들을 제외하고", "hashtag.column_settings.tag_toggle": "추가 해시태그를 이 컬럼에 추가합니다", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "최근 {days}일 동안의 총 사용량", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "기본", "home.column_settings.show_reblogs": "부스트 표시", "home.column_settings.show_replies": "답글 표시", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "팔로워", "timeline_hint.resources.follows": "팔로우", "timeline_hint.resources.statuses": "이전 게시물", - "trends.counter_by_accounts": "{counter} 명이 말하는 중", + "trends.counter_by_accounts": "이전 {days}일 동안 {counter} 명의 사용자", "trends.trending_now": "지금 유행중", "ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 2bc1e9bea..d8c4151d3 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Yek ji van", "hashtag.column_settings.tag_mode.none": "Ne yek ji van", "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Tevahiya giraniyê dawîn di {days, plural, one {roj} other {{days} roj}} de", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bingehîn", "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike", "home.column_settings.show_replies": "Bersivan nîşan bide", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Şopîner", "timeline_hint.resources.follows": "Dişopîne", "timeline_hint.resources.statuses": "Şandiyên kevn", - "trends.counter_by_accounts": "{count, plural, one {{counter} kes} other {{counter} kes}} diaxivin", + "trends.counter_by_accounts": "{count, plural, one {{counter} kes} other {{counter} kes}} berî {days, plural, one {roj} other {{days} roj}}", "trends.trending_now": "Rojev", "ui.beforeunload": "Ger ji Mastodonê veketi wê reşnivîsa te jî winda bibe.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 8ffa521b5..988655921 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Pynag a'n re ma", "hashtag.column_settings.tag_mode.none": "Travyth a'n re ma", "hashtag.column_settings.tag_toggle": "Yssynsi taggys ynwedhek rag an goloven ma", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Selyek", "home.column_settings.show_reblogs": "Diskwedhes kenerthow", "home.column_settings.show_replies": "Diskwedhes gorthebow", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Holyoryon", "timeline_hint.resources.follows": "Holyansow", "timeline_hint.resources.statuses": "Kottha postow", - "trends.counter_by_accounts": "{count, plural, one {{counter} den} other {{counter} a dus}} ow kewsel", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Tuedhegus lemmyn", "ui.beforeunload": "Agas kysnkrif a vydh kellys mar kwrewgh diberth a Mastodon.", "units.short.billion": "{count}Mek", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 1a69e7e1d..3df14c833 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index a91fa9aea..1cb0095b1 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Kāds no šiem", "hashtag.column_settings.tag_mode.none": "Neviens no šiem", "hashtag.column_settings.tag_toggle": "Iekļaut šai kolonnai papildu tagus", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Kopējais apjoms par {days, plural, one {dienu} other {{days} dienām}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Pamata", "home.column_settings.show_reblogs": "Rādīt palielinājumus", "home.column_settings.show_replies": "Rādīt atbildes", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sekotāji", "timeline_hint.resources.follows": "Seko", "timeline_hint.resources.statuses": "Vecākas ziņas", - "trends.counter_by_accounts": "Sarunājas {count, plural, one {{counter} persona} other {{counter} cilvēki}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} cilvēki}} par {days, plural, one {dienu} other {{days} dienām}}", "trends.trending_now": "Šobrīd tendences", "ui.beforeunload": "Ja pametīsit Mastodonu, jūsu melnraksts tiks zaudēts.", "units.short.billion": "{count}M", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 36126fc25..faf4174f9 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Било кои", "hashtag.column_settings.tag_mode.none": "Никои", "hashtag.column_settings.tag_toggle": "Стави додатни тагови за оваа колона", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Прикажи бустирања", "home.column_settings.show_replies": "Прикажи одговори", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 4307259c0..175316e84 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "ഇവയിലേതെങ്കിലും", "hashtag.column_settings.tag_mode.none": "ഇതിലൊന്നുമല്ല", "hashtag.column_settings.tag_toggle": "ഈ എഴുത്തുപംക്തിക്ക് കൂടുതൽ ഉപനാമങ്ങൾ ചേർക്കുക", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "അടിസ്ഥാനം", "home.column_settings.show_reblogs": "ബൂസ്റ്റുകൾ കാണിക്കുക", "home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "പിന്തുടരുന്നവർ", "timeline_hint.resources.follows": "പിന്തുടരുന്നു", "timeline_hint.resources.statuses": "പഴയ ടൂട്ടുകൾ", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "ഇപ്പോൾ ട്രെൻഡിംഗ്", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index d78e0384e..762d94c40 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index c1f20ec4f..13a1e3345 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Mana-mana daripada yang ini", "hashtag.column_settings.tag_mode.none": "Tiada apa pun daripada yang ini", "hashtag.column_settings.tag_toggle": "Sertakan tag tambahan untuk lajur ini", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Asas", "home.column_settings.show_reblogs": "Tunjukkan galakan", "home.column_settings.show_replies": "Tunjukkan balasan", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Pengikut", "timeline_hint.resources.follows": "Ikutan", "timeline_hint.resources.statuses": "Hantaran lebih lama", - "trends.counter_by_accounts": "{count, plural, other {{counter} orang}} bercakap", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Sohor kini", "ui.beforeunload": "Rangka anda akan terhapus jika anda meninggalkan Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index db67d2bcd..94cbd5bcd 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Een van deze", "hashtag.column_settings.tag_mode.none": "Geen van deze", "hashtag.column_settings.tag_toggle": "Additionele tags aan deze kolom toevoegen", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Algemeen", "home.column_settings.show_reblogs": "Boosts tonen", "home.column_settings.show_replies": "Reacties tonen", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Volgers", "timeline_hint.resources.follows": "Volgend", "timeline_hint.resources.statuses": "Oudere berichten", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoon} other {{counter} personen}} zijn aan het praten", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Huidige trends", "ui.beforeunload": "Je concept gaat verloren wanneer je Mastodon verlaat.", "units.short.billion": "{count} mrd.", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 87d3579e9..1a8904cd2 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Kva som helst av desse", "hashtag.column_settings.tag_mode.none": "Ikkje nokon av disse", "hashtag.column_settings.tag_toggle": "Inkluder ekstra emneknaggar for denne kolonna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Enkelt", "home.column_settings.show_reblogs": "Vis framhevingar", "home.column_settings.show_replies": "Vis svar", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Fylgjarar", "timeline_hint.resources.follows": "Fylgjer", "timeline_hint.resources.statuses": "Eldre tut", - "trends.counter_by_accounts": "Pratas om av {count, plural, one {{counter} person} other {{counter} folk}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Populært no", "ui.beforeunload": "Kladden din forsvinn om du forlèt Mastodon no.", "units.short.billion": "{count}m.ard", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index b4da321eb..829be51a5 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Enhver av disse", "hashtag.column_settings.tag_mode.none": "Ingen av disse", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Enkelt", "home.column_settings.show_reblogs": "Vis fremhevinger", "home.column_settings.show_replies": "Vis svar", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Følgere", "timeline_hint.resources.follows": "Følger", "timeline_hint.resources.statuses": "Eldre tuter", - "trends.counter_by_accounts": "Snakkes om av {count, plural, one {{counter} person} other {{counter} personer}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trender nå", "ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.", "units.short.billion": "{count}m.ard", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 982a3fa16..b065b4e8f 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Un d’aquestes", "hashtag.column_settings.tag_mode.none": "Cap d’aquestes", "hashtag.column_settings.tag_toggle": "Inclure las etiquetas suplementàrias dins aquesta colomna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Mostrar los partatges", "home.column_settings.show_replies": "Mostrar las responsas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Abonaments", "timeline_hint.resources.statuses": "Tuts mai ancians", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona ne parla} other {{counter} personas ne parlan}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Tendéncia del moment", "ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 13cb39de8..99fdcfd45 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 3093ce15e..bc8799831 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Dowolne", "hashtag.column_settings.tag_mode.none": "Żadne", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Całkowity wolumen w ciągu {days, plural, one {ostatniego dnia} other {ostatnich {days} dni}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Podstawowe", "home.column_settings.show_reblogs": "Pokazuj podbicia", "home.column_settings.show_replies": "Pokazuj odpowiedzi", @@ -451,7 +454,7 @@ "search_results.nothing_found": "Nie znaleziono innych wyników dla tego wyszukania", "search_results.statuses": "Wpisy", "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", - "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} more {wyników}}", + "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} other {wyników}}", "status.admin_account": "Otwórz interfejs moderacyjny dla @{name}", "status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym", "status.block": "Zablokuj @{name}", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Śledzący", "timeline_hint.resources.follows": "Śledzeni", "timeline_hint.resources.statuses": "Starsze wpisy", - "trends.counter_by_accounts": "rozmawiają: {count, plural, one {{counter} osoba} few {{counter} osoby} many {{counter} osób} other {{counter} osoby}}", + "trends.counter_by_accounts": "{count, plural, one {jedna osoba} few {{count} osoby} many {{count} osób} other {{counter} ludzie}} w ciągu {days, plural, one {ostatniego dnia} other {ostatnich {days} dni}}", "trends.trending_now": "Popularne teraz", "ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Mastodona.", "units.short.billion": "{count} mld", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index bb9800786..0073ff5f1 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Qualquer uma", "hashtag.column_settings.tag_mode.none": "Nenhuma", "hashtag.column_settings.tag_toggle": "Adicionar mais hashtags aqui", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Segue", "timeline_hint.resources.statuses": "Toots anteriores", - "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} falando", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Em alta agora", "ui.beforeunload": "Seu rascunho será perdido se sair do Mastodon.", "units.short.billion": "{count} bi", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index c8810703e..643ef1c6e 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Qualquer destes", "hashtag.column_settings.tag_mode.none": "Nenhum destes", "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionais para esta coluna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volume total {days, plural, one {no último dia} other {nos últimos {days} dias}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", @@ -366,7 +369,7 @@ "poll.closed": "Fechado", "poll.refresh": "Recarregar", "poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}", - "poll.total_votes": "{contar, plural, um {# vote} outro {# votes}}", + "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Votaste nesta resposta", "poll.votes": "{votes, plural, one {# voto } other {# votos}}", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Seguindo", "timeline_hint.resources.statuses": "Toots antigos", - "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} a conversar", + "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} {days, plural, one {no último dia} other {nos últimos {days} dias}}", "trends.trending_now": "Tendências atuais", "ui.beforeunload": "O teu rascunho será perdido se abandonares o Mastodon.", "units.short.billion": "{count}MM", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 0c2ce0b2d..a3188f553 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Oricare din acestea", "hashtag.column_settings.tag_mode.none": "Niciuna dintre acestea", "hashtag.column_settings.tag_toggle": "Adaugă etichete suplimentare pentru această coloană", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "De bază", "home.column_settings.show_reblogs": "Afișează distribuirile", "home.column_settings.show_replies": "Afișează răspunsurile", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Urmăritori", "timeline_hint.resources.follows": "Urmăriri", "timeline_hint.resources.statuses": "Postări mai vechi", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoană postează} other {{counter} persoane postează}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "În tendință acum", "ui.beforeunload": "Postarea se va pierde dacă părăsești pagina.", "units.short.billion": "{count}Mld", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 015fb0feb..ca9a2cceb 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Любой из списка", "hashtag.column_settings.tag_mode.none": "Ни один из списка", "hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Общий объем за {days, plural, =1 {последний день} one {последний {days} день} few {последних {days} дня} many {последних {days} дней} other {последних {days} дней}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основные", "home.column_settings.show_reblogs": "Показывать продвижения", "home.column_settings.show_replies": "Показывать ответы", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "подписчиков", "timeline_hint.resources.follows": "подписки", "timeline_hint.resources.statuses": "прошлые посты", - "trends.counter_by_accounts": "{count, plural, one {{counter} человек обсуждает} few {{counter} человека обсуждают} many {{counter} человек обсуждают} other {{counter} человека обсуждает}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} человек} few {{counter} человека} many {{counter} человек} other {{counter} человека}} на протяжении {days, plural, =1 {последнего дня} one {последнего {days} дня} few {последних {days} дней} many {последних {days} дней} other {последних {days} дней}}", "trends.trending_now": "Самое актуальное", "ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.", "units.short.billion": "{count} млрд", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 0bcca64ea..ecbdf816c 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 957b114c0..aaecfd8e1 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cale si siat de custos", "hashtag.column_settings.tag_mode.none": "Perunu de custos", "hashtag.column_settings.tag_toggle": "Include etichetas additzionales pro custa colunna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bàsicu", "home.column_settings.show_reblogs": "Ammustra is cumpartziduras", "home.column_settings.show_replies": "Ammustra rispostas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sighiduras", "timeline_hint.resources.follows": "Sighende", "timeline_hint.resources.statuses": "Publicatziones prus betzas", - "trends.counter_by_accounts": "{count, plural, one {{counter} persone} other {{counter} persones}} chistionende", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Est tendèntzia immoe", "ui.beforeunload": "S'abbotzu tuo at a èssere pèrdidu si essis dae Mastodon.", "units.short.billion": "{count}Mrd", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 7ef228273..e50ea9135 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "ඇතුළත් එකක්", "hashtag.column_settings.tag_mode.none": "මේ කිසිවක් නැත", "hashtag.column_settings.tag_toggle": "මෙම තීරුවේ අමතර ටැග් ඇතුළත් කරන්න", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "මූලික", "home.column_settings.show_reblogs": "බූස්ට් පෙන්වන්න", "home.column_settings.show_replies": "ප්රතිචාර පෙන්වන්න", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "අනුගාමිකයින්", "timeline_hint.resources.follows": "පහත සඳහන්", "timeline_hint.resources.statuses": "පැරණි දත්", - "trends.counter_by_accounts": "{count, plural, one {{counter} පුද්ගලයා} other {{counter} මහජන}} කතා කරනවා", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "දැන් ප්‍රවණතාවය", "ui.beforeunload": "ඔබ Mastodon හැර ගියහොත් ඔබේ කෙටුම්පත නැති වනු ඇත.", "units.short.billion": "{count}බී", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 46873d31c..3454fe7d2 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Hociktorý z týchto", "hashtag.column_settings.tag_mode.none": "Žiaden z týchto", "hashtag.column_settings.tag_toggle": "Vlož dodatočné haštagy pre tento stĺpec", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Základné", "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté", "home.column_settings.show_replies": "Ukáž odpovede", @@ -234,7 +237,7 @@ "keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov", "keyboard_shortcuts.compose": "zameraj sa na písaciu plochu", "keyboard_shortcuts.description": "Popis", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "pre otvorenie panelu priamých správ", "keyboard_shortcuts.down": "posunúť sa dole v zozname", "keyboard_shortcuts.enter": "Otvor príspevok", "keyboard_shortcuts.favourite": "pridaj do obľúbených", @@ -327,7 +330,7 @@ "notification.update": "{name} upravil/a príspevok", "notifications.clear": "Vyčisti oboznámenia", "notifications.clear_confirmation": "Naozaj chceš nenávratne prečistiť všetky tvoje oboznámenia?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Nové hlásenia:", "notifications.column_settings.admin.sign_up": "Nové registrácie:", "notifications.column_settings.alert": "Oboznámenia na ploche", "notifications.column_settings.favourite": "Obľúbené:", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sledujúci", "timeline_hint.resources.follows": "Následuje", "timeline_hint.resources.statuses": "Staršie príspevky", - "trends.counter_by_accounts": "{count, plural, one {{counter} človek rozpráva} few {{counter} ľudia rozprávajú} many {{counter} ľudia rozprávajú} other {{counter} ľudí rozpráva}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Teraz populárne", "ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Mastodon.", "units.short.billion": "{count}mld.", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 6e7368592..733614f3e 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Karkoli od naštetega", "hashtag.column_settings.tag_mode.none": "Nič od naštetega", "hashtag.column_settings.tag_toggle": "Za ta stolpec vključi dodatne oznake", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Skupen obseg v {days, plural, one {zadnjem {day} dnevu} two {zadnjih {days} dneh} few {zadnjih {days} dneh} other {zadnjih {days} dneh}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži izpostavitve", "home.column_settings.show_replies": "Pokaži odgovore", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "sledilcev", "timeline_hint.resources.follows": "Sledi", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{count} oseba govori} two {{count} osebi govorita} few {{count} osebe govorijo} other {{count} oseb govori}}", + "trends.counter_by_accounts": "{count, plural, one {{count} oseba} two {{count} osebi} few {{count} osebe} other {{count} oseb}} v {days, plural, one {zadnjem {day} dnevu} two {zadnjih {days} dneh} few {zadnjih {days} dneh} other {zadnjih {days} dneh}}", "trends.trending_now": "Zdaj v trendu", "ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.", "units.short.billion": "{count} milijard", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 4aa70477d..8bc440503 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cilindo prej këtyre", "hashtag.column_settings.tag_mode.none": "Asnjë prej këtyre", "hashtag.column_settings.tag_toggle": "Përfshi etiketa shtesë për këtë shtyllë", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Vëllim gjithsej {days, plural, një {day} other {{days} ditët}} e fundit", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bazë", "home.column_settings.show_reblogs": "Shfaq përforcime", "home.column_settings.show_replies": "Shfaq përgjigje", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Ndjekës", "timeline_hint.resources.follows": "Ndjekje", "timeline_hint.resources.statuses": "Mesazhe të vjetër", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} vetë}} duke folur", + "trends.counter_by_accounts": "{count, plural, një {{counter} person} other {{counter} vetë}} në {days, plural, një {day} other {{days} ditë}} të kaluar", "trends.trending_now": "Prirjet e tashme", "ui.beforeunload": "Skica juaj do të humbë, nëse dilni nga Mastodon-i.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 4dedb58bb..131af97e1 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Prikaži i podržavanja", "home.column_settings.show_replies": "Prikaži odgovore", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Ako napustite Mastodont, izgubićete napisani nacrt.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 42ae479da..a2409e957 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Било које од ових", "hashtag.column_settings.tag_mode.none": "Ништа од ових", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Прикажи и подржавања", "home.column_settings.show_replies": "Прикажи одговоре", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Пратиоци", "timeline_hint.resources.follows": "Праћени", "timeline_hint.resources.statuses": "Старији тут", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.", "units.short.billion": "{count}Б", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index d8d2c6720..c0a69b24b 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Någon av dessa", "hashtag.column_settings.tag_mode.none": "Ingen av dessa", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Grundläggande", "home.column_settings.show_reblogs": "Visa knuffar", "home.column_settings.show_replies": "Visa svar", @@ -451,7 +454,7 @@ "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", "search_results.statuses": "Inlägg", "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", - "search_results.total": "{count, number} {count, plural, ett {result} andra {results}}", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", "status.admin_status": "Öppna denna status i modereringsgränssnittet", "status.block": "Blockera @{name}", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Följare", "timeline_hint.resources.follows": "Följer", "timeline_hint.resources.statuses": "Äldre tutningar", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} pratar", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trendar nu", "ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 13cb39de8..99fdcfd45 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 6491ff7b7..cc7241bad 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "இவற்றில் எவையேனும்", "hashtag.column_settings.tag_mode.none": "இவற்றில் ஏதுமில்லை", "hashtag.column_settings.tag_toggle": "இந்த நெடுவரிசையில் கூடுதல் சிட்டைகளைச் சேர்க்கவும்", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "அடிப்படையானவை", "home.column_settings.show_reblogs": "பகிர்வுகளைக் காண்பி", "home.column_settings.show_replies": "மறுமொழிகளைக் காண்பி", @@ -366,7 +369,7 @@ "poll.closed": "மூடிய", "poll.refresh": "பத்துயிர்ப்ப?ட்டு", "poll.total_people": "{count, plural, one {# நபர்} other {# நபர்கள்}}", - "poll.total_votes": "{count, plural, one {# vote} மற்ற {# votes}}", + "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", "poll.vote": "வாக்களி", "poll.voted": "உங்கள் தேர்வு", "poll.votes": "{votes, plural, one {# vote} other {# votes}}", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "வாசகர்கள்", "timeline_hint.resources.follows": "வாசிக்கிறார்", "timeline_hint.resources.statuses": "பழைய டூட்டுகள்", - "trends.counter_by_accounts": "{count, plural, one {{counter} நபர்} other {{counter} நபர்கள்}} உரையாடலில்", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "இப்போது செல்திசையில் இருப்பவை", "ui.beforeunload": "நீங்கள் வெளியே சென்றால் உங்கள் வரைவு இழக்கப்படும் மஸ்தோடோன்.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 268ce7ef7..17b0e1ed1 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index f2312ee12..bbe99b4a6 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "వీటిలో ఏవైనా", "hashtag.column_settings.tag_mode.none": "ఇవేవీ కావు", "hashtag.column_settings.tag_toggle": "ఈ నిలువు వరుసలో మరికొన్ని ట్యాగులను చేర్చండి", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "ప్రాథమిక", "home.column_settings.show_reblogs": "బూస్ట్ లను చూపించు", "home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "మీరు మాస్టొడొన్ను వదిలివేస్తే మీ డ్రాఫ్ట్లు పోతాయి.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 3bcae61b8..0bff3caab 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -198,7 +198,7 @@ "explore.trending_tags": "แฮชแท็ก", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", - "follow_recommendations.lead": "โพสต์จากคนที่คุณติดตามจะแสดงตามลำดับเวลาบนฟีดหลักของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้ง่ายๆ ทุกเมื่อ!", + "follow_recommendations.lead": "โพสต์จากผู้คนที่คุณติดตามจะแสดงตามลำดับเวลาในฟีดหน้าแรกของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้อย่างง่ายดายเมื่อใดก็ตาม!", "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "ใดก็ตามนี้", "hashtag.column_settings.tag_mode.none": "ไม่ใช่ทั้งหมดนี้", "hashtag.column_settings.tag_toggle": "รวมแท็กเพิ่มเติมสำหรับคอลัมน์นี้", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "พื้นฐาน", "home.column_settings.show_reblogs": "แสดงการดัน", "home.column_settings.show_replies": "แสดงการตอบกลับ", @@ -268,7 +271,7 @@ "lightbox.next": "ถัดไป", "lightbox.previous": "ก่อนหน้า", "limited_account_hint.action": "แสดงโปรไฟล์ต่อไป", - "limited_account_hint.title": "โปรไฟล์นี้ถูกซ่อนไว้โดยโมเดอเรเตอร์ของเซิร์ฟเวอร์ของคุณ", + "limited_account_hint.title": "มีการซ่อนโปรไฟล์นี้โดยผู้ควบคุมของเซิร์ฟเวอร์ของคุณ", "lists.account.add": "เพิ่มไปยังรายการ", "lists.account.remove": "เอาออกจากรายการ", "lists.delete": "ลบรายการ", @@ -360,7 +363,7 @@ "notifications.permission_denied_alert": "ไม่สามารถเปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป เนื่องจากมีการปฏิเสธสิทธิอนุญาตเบราว์เซอร์ก่อนหน้านี้", "notifications.permission_required": "การแจ้งเตือนบนเดสก์ท็อปไม่พร้อมใช้งานเนื่องจากไม่ได้ให้สิทธิอนุญาตที่จำเป็น", "notifications_permission_banner.enable": "เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป", - "notifications_permission_banner.how_to_control": "หากต้องการรับการแจ้งเตือนเมื่อไม่ได้เปิด Mastodon ให้เปิดใช้การแจ้งเตือนบนเดสก์ท็อป คุณสามารถควบคุมได้ตามความต้องการด้วยการโต้ตอบประเภทที่สร้างการแจ้งเตือนบนเดสก์ท็อปผ่านปุ่ม {icon} ด้านบนเมื่อเปิดใช้งาน", + "notifications_permission_banner.how_to_control": "เพื่อรับการแจ้งเตือนเมื่อ Mastodon ไม่ได้เปิด เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป คุณสามารถควบคุมชนิดของการโต้ตอบที่สร้างการแจ้งเตือนบนเดสก์ท็อปได้อย่างแม่นยำผ่านปุ่ม {icon} ด้านบนเมื่อเปิดใช้งานการแจ้งเตือน", "notifications_permission_banner.title": "ไม่พลาดสิ่งใด", "picture_in_picture.restore": "นำกลับมา", "poll.closed": "ปิดแล้ว", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "ผู้ติดตาม", "timeline_hint.resources.follows": "การติดตาม", "timeline_hint.resources.statuses": "โพสต์ที่เก่ากว่า", - "trends.counter_by_accounts": "{count, plural, other {{counter} คน}}กำลังพูดคุย", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "กำลังนิยม", "ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Mastodon", "units.short.billion": "{count} พันล้าน", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 070bdb95b..3948bde5e 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Herhangi biri", "hashtag.column_settings.tag_mode.none": "Bunların hiçbiri", "hashtag.column_settings.tag_toggle": "Bu sütundaki ek etiketleri içer", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Son {days, plural, one {gündeki} other {{days} gündeki}} toplam hacim", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Temel", "home.column_settings.show_reblogs": "Boostları göster", "home.column_settings.show_replies": "Yanıtları göster", @@ -468,7 +471,7 @@ "status.embed": "Gömülü", "status.favourite": "Favorilerine ekle", "status.filtered": "Filtrelenmiş", - "status.hide": "Hide toot", + "status.hide": "Gönderiyi sakla", "status.history.created": "{name} oluşturdu {date}", "status.history.edited": "{name} düzenledi {date}", "status.load_more": "Daha fazlasını yükle", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Takipçiler", "timeline_hint.resources.follows": "Takip Edilenler", "timeline_hint.resources.statuses": "Eski tootlar", - "trends.counter_by_accounts": "{count, plural, one {{counter} kişi} other {{counter} kişi}} konuşuyor", + "trends.counter_by_accounts": "Son {days, plural, one {gündeki} other {{days} gündeki}} {count, plural, one {{counter} kişi} other {{counter} kişi}}", "trends.trending_now": "Şu an gündemde", "ui.beforeunload": "Mastodon'u terk ederseniz taslağınız kaybolacak.", "units.short.billion": "{count}Mr", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 6ace5e763..c9a48d37c 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 13cb39de8..99fdcfd45 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 4b0bc5e70..727b0b994 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Який-небудь зі списку", "hashtag.column_settings.tag_mode.none": "Жоден зі списку", "hashtag.column_settings.tag_toggle": "Додати додаткові теґи до цього стовпчика", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Загальний обсяг за останні(й) {days, plural, one {день} few {{days} дні} other {{days} днів}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основні", "home.column_settings.show_reblogs": "Показувати поширення", "home.column_settings.show_replies": "Показувати відповіді", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Підписники", "timeline_hint.resources.follows": "Підписки", "timeline_hint.resources.statuses": "Попередні дописи", - "trends.counter_by_accounts": "{count, plural, one {{counter} особа обговорює} few {{counter} особи обговорюють} many {{counter} осіб обговорюють} other {{counter} особи обговорюють}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особи} other {{counter} осіб}} за останні(й) {days, plural, one {день} few {{days} дні} other {{days} днів}}", "trends.trending_now": "Актуальні", "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.", "units.short.billion": "{count} млрд.", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 9485dbabf..b3e3fd771 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "ان میں سے کوئی", "hashtag.column_settings.tag_mode.none": "ان میں سے کوئی بھی نہیں", "hashtag.column_settings.tag_toggle": "اس کالم کے لئے مزید ٹیگز شامل کریں", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "بنیادی", "home.column_settings.show_reblogs": "افزائشات دکھائیں", "home.column_settings.show_replies": "جوابات دکھائیں", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 1019c342a..4cdb1e53d 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Một phần", "hashtag.column_settings.tag_mode.none": "Không chọn", "hashtag.column_settings.tag_toggle": "Bao gồm thêm hashtag cho cột này", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Tổng số lần sử dụng {days, plural, other {{days} ngày}} qua", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Tùy chỉnh", "home.column_settings.show_reblogs": "Hiện những lượt đăng lại", "home.column_settings.show_replies": "Hiện những tút dạng trả lời", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Người theo dõi", "timeline_hint.resources.follows": "Đang theo dõi", "timeline_hint.resources.statuses": "Tút cũ hơn", - "trends.counter_by_accounts": "{count, plural, one {{counter} người} other {{counter} người}} đang thảo luận", + "trends.counter_by_accounts": "{count, plural, other {{count} lượt}} dùng trong {days, plural, other {{days} ngày}} qua", "trends.trending_now": "Xu hướng", "ui.beforeunload": "Bản nháp của bạn sẽ bị mất nếu bạn thoát khỏi Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 7f1965401..898cc22a9 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "ⵉⵎⴹⴼⴰⵕⵏ", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} ⵓⴼⴳⴰⵏ} other {{counter} ⵉⴼⴳⴰⵏⵏ}} ⴰⴳ ⵙⵙⴰⵡⴰⵍⵏ", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index dcb54735f..334b93034 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "无一", "hashtag.column_settings.tag_toggle": "在此栏加入额外的标签", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "在过去的{days, plural,one {day}other {{days}days}}的总数量", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "基本设置", "home.column_settings.show_reblogs": "显示转嘟", "home.column_settings.show_replies": "显示回复", @@ -278,7 +281,7 @@ "lists.new.title_placeholder": "新列表的标题", "lists.replies_policy.followed": "任何被关注的用户", "lists.replies_policy.list": "列表成员", - "lists.replies_policy.none": "没有人", + "lists.replies_policy.none": "无人", "lists.replies_policy.title": "显示回复给:", "lists.search": "搜索你关注的人", "lists.subheading": "你的列表", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "关注者", "timeline_hint.resources.follows": "关注", "timeline_hint.resources.statuses": "更早的嘟文", - "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}}正在讨论", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "现在流行", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", "units.short.billion": "{count} B", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 867ced8d5..e3c65cdab 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "全不", "hashtag.column_settings.tag_toggle": "在這欄位加入額外的標籤", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示被轉推的文章", "home.column_settings.show_replies": "顯示回應文章", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "關注者", "timeline_hint.resources.follows": "關注中", "timeline_hint.resources.statuses": "更早的文章", - "trends.counter_by_accounts": "{count, plural, one {{counter} 個人}other {{counter} 個人}}正在討論", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "現在流行", "ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 1589ff09a..99814b30d 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "全不", "hashtag.column_settings.tag_toggle": "將額外標籤加入到這個欄位", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "過去 {days, plural, one {日} other {{days} 日}} 之總量", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示轉嘟", "home.column_settings.show_replies": "顯示回覆", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "跟隨者", "timeline_hint.resources.follows": "正在跟隨", "timeline_hint.resources.statuses": "更早的嘟文", - "trends.counter_by_accounts": "{count, plural,one {{counter} 人}other {{counter} 人}}正在討論", + "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}} 於過去 {days, plural, one {日} other {{days} days}} 之間", "trends.trending_now": "現正熱門", "ui.beforeunload": "如果離開 Mastodon,您的草稿將會不見。", "units.short.billion": "{count}B", diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index bc063864a..cc650cec8 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -45,5 +45,7 @@ fr: permissions_as_keys: dangerous: inclure des autorisations non sécurisées pour le rôle de base elevated: ne peut pas inclure des autorisations que votre rôle actuel ne possède pas + own_role: ne peut pas être modifié avec votre rôle actuel position: elevated: ne peut pas être supérieur à votre rôle actuel + own_role: ne peut pas être modifié avec votre rôle actuel diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml index 5dc8ddc96..7a9d54cd2 100644 --- a/config/locales/activerecord.he.yml +++ b/config/locales/activerecord.he.yml @@ -21,6 +21,14 @@ he: username: invalid: ספרות, אותיות לטיניות וקו תחתי בלבד reserved: שמור + admin/webhook: + attributes: + url: + invalid: כתובת לא חוקית + doorkeeper/application: + attributes: + website: + invalid: הינה כתובת לא חוקית status: attributes: reblog: @@ -30,3 +38,14 @@ he: email: blocked: עושה שימוש בספק דוא"ל אסור unreachable: נראה שלא קיים + role_id: + elevated: לא יכול להיות גבוה יותר מתפקידך הנוכחי + user_role: + attributes: + permissions_as_keys: + dangerous: כלול הרשאות לא בטוחות לתפקיד הבסיסי + elevated: לא ניתן לכלול הרשאות שתפקידך הנוכחי לא כולל + own_role: לא ניתן למזג על תפקידך הנוכחי + position: + elevated: לא יכול להיות גבוה יותר מתפקידך הנוכחי + own_role: לא ניתן לשנות באמצעות תפקידך הנוכחי diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index 78ee745e2..68d0b7784 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -43,6 +43,8 @@ pl: user_role: attributes: permissions_as_keys: + dangerous: dołącz uprawnienia, które nie są bezpieczne dla roli podstawowej + elevated: nie może zawierać uprawnień, jakie twoja obecna rola nie posiada own_role: nie można zmienić z aktualną rolą position: elevated: nie może być wyższa niż twoja bieżąca rola diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 716c003e9..64586f5bb 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -43,7 +43,9 @@ th: user_role: attributes: permissions_as_keys: - dangerous: รวมสิทธิ์ที่ไม่ปลอดภัยสำหรับบทบาทพื้นฐาน - elevated: ไม่สามารถรวบรวมสิทธิ์ในบทบาทปัจจุบันของคุณไม่ได้ + dangerous: รวมสิทธิอนุญาตที่ไม่ปลอดภัยสำหรับบทบาทพื้นฐาน + elevated: ไม่สามารถรวมสิทธิอนุญาตที่บทบาทปัจจุบันของคุณไม่มี + own_role: ไม่สามารถเปลี่ยนด้วยบทบาทปัจจุบันของคุณ position: elevated: ไม่สามารถสูงกว่าบทบาทปัจจุบันของคุณ + own_role: ไม่สามารถเปลี่ยนด้วยบทบาทปัจจุบันของคุณ diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index e9f8a9fff..f0787dc41 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -45,5 +45,7 @@ tr: permissions_as_keys: dangerous: temel rol için güvenli olmayan izinleri içerir elevated: mevcut rolünüzün sahip olmadığı izinleri içeremez + own_role: mevcut rolünüzle değiştirilemez position: elevated: mevcut rolünüzden yüksek olamaz + own_role: mevcut rolünüzle değiştirilemez diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index aeffa3daf..9062dc532 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -45,5 +45,7 @@ vi: permissions_as_keys: dangerous: bao gồm các quyền không an toàn cho vai trò cơ bản elevated: không thể bao gồm các quyền mà vai trò hiện tại của bạn không có + own_role: không thể thay đổi vai trò hiện tại của bạn position: elevated: không thể cao hơn vai trò hiện tại của bạn + own_role: không thể thay đổi vai trò hiện tại của bạn diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index 27ec73ab9..c46c87451 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -19,27 +19,27 @@ zh-CN: account: attributes: username: - invalid: 只能使用字母、数字和下划线 + invalid: 只能包含字母、数字和下划线 reserved: 是保留关键字 admin/webhook: attributes: url: - invalid: 不是有效的 URL。 + invalid: 非有效网址 doorkeeper/application: attributes: website: - invalid: 网址无效 + invalid: 非有效网址 status: attributes: reblog: - taken: 已经被转嘟过 + taken: 已被转嘟过 user: attributes: email: blocked: 使用了被封禁的电子邮件提供商 unreachable: 似乎不存在 role_id: - elevated: 不能高于您当前的角色 + elevated: 不能高于您当前的身份 user_role: attributes: permissions_as_keys: @@ -48,3 +48,4 @@ zh-CN: own_role: 无法以您当前的身份更改 position: elevated: 不能高于您当前的角色 + own_role: 无法以您当前的身份更改 diff --git a/config/locales/devise.he.yml b/config/locales/devise.he.yml index 63bb3aedd..0f389bd38 100644 --- a/config/locales/devise.he.yml +++ b/config/locales/devise.he.yml @@ -110,3 +110,8 @@ he: expired: פג תוקפו. נא לבקש חדש not_found: לא נמצא not_locked: לא היה נעול + not_saved: + many: "%{count} שגיאות מנעו מ%{resource} זה מלהשמר:" + one: 'שגיאה אחת מנעה מ%{resource} זה מלהשמר:' + other: "%{count} שגיאות מנעו מ%{resource} זה מלהשמר:" + two: " %{count} שגיאות מנעו מ%{resource} זה מלהשמר:" diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index 963b2361d..a7e4a69a5 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -81,25 +81,25 @@ th: errors: messages: access_denied: เจ้าของทรัพยากรหรือเซิร์ฟเวอร์การอนุญาตปฏิเสธคำขอ - credential_flow_not_configured: การไหลของข้อมูลรับรองรหัสผ่านเจ้าของทรัพยากรล้มเหลวเนื่องจาก Doorkeeper.configure.resource_owner_from_credentials ไม่ได้ถูกกำหนดค่า - invalid_client: การตรวจสอบสิทธิ์ไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่รวมการตรวจสอบไคลเอ็นต์ หรือวิธีการตรวจสอบสิทธิ์ที่ไม่รองรับ - invalid_grant: การให้สิทธิ์ที่ระบุไม่ถูกต้อง หมดอายุ เพิกถอน ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ใช้ในคำขอการให้สิทธิ์ หรือออกให้ไคลเอ็นต์อื่น + credential_flow_not_configured: โฟลว์ข้อมูลประจำตัวรหัสผ่านเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_from_credentials + invalid_client: การรับรองความถูกต้องไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่มีการรับรองความถูกต้องไคลเอ็นต์ที่รวมอยู่ หรือวิธีการรับรองความถูกต้องที่ไม่รองรับ + invalid_grant: การให้การรับรองความถูกต้องที่ให้มาไม่ถูกต้อง หมดอายุแล้ว เพิกถอนแล้ว ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ใช้ในคำขอการรับรองความถูกต้อง หรือออกให้ไคลเอ็นต์อื่น invalid_redirect_uri: URI การเปลี่ยนเส้นทางที่รวมอยู่ไม่ถูกต้อง invalid_request: missing_param: 'พารามิเตอร์ที่จำเป็นขาดหายไป: %{value}' - request_not_authorized: คำขอต้องได้รับอนุญาต พารามิเตอร์ที่จำเป็นสำหรับการให้สิทธิ์คำขอขาดหายไปหรือไม่ถูกต้อง - unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น มีค่าพารามิเตอร์ที่ไม่รองรับ หรืออยู่ในรูปแบบที่ไม่ถูกต้อง - invalid_resource_owner: ข้อมูลรับรองเจ้าของทรัพยากรที่ระบุไม่ถูกต้อง หรือไม่พบเจ้าของทรัพยากร + request_not_authorized: คำขอจำเป็นต้องได้รับอนุญาต พารามิเตอร์ที่จำเป็นสำหรับการอนุญาตคำขอขาดหายไปหรือไม่ถูกต้อง + unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น รวมค่าพารามิเตอร์ที่ไม่รองรับ หรือผิดรูปแบบ + invalid_resource_owner: ข้อมูลประจำตัวเจ้าของทรัพยากรที่ให้มาไม่ถูกต้อง หรือไม่พบเจ้าของทรัพยากร invalid_scope: ขอบเขตที่ขอไม่ถูกต้อง ไม่รู้จัก หรือผิดรูปแบบ invalid_token: expired: โทเคนการเข้าถึงหมดอายุแล้ว revoked: เพิกถอนโทเคนการเข้าถึงแล้ว unknown: โทเคนการเข้าถึงไม่ถูกต้อง resource_owner_authenticator_not_configured: การค้นหาเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_authenticator - server_error: เซิร์ฟเวอร์การให้สิทธิ์พบสภาวะที่ไม่คาดคิดซึ่งทำให้ไม่สามารถดำเนินการตามคำขอได้ - temporarily_unavailable: ขณะนี้เซิร์ฟเวอร์การให้สิทธิ์ไม่สามารถจัดการตามคำขอได้ เนื่องจากการโอเวอร์โหลดหรือมีการบำรุงรักษาเซิร์ฟเวอร์ชั่วคราว + server_error: เซิร์ฟเวอร์การรับรองความถูกต้องพบเงื่อนไขที่ไม่คาดคิดซึ่งป้องกันไม่ให้เซิร์ฟเวอร์ดำเนินการตามคำขอ + temporarily_unavailable: เซิร์ฟเวอร์การรับรองความถูกต้องไม่สามารถจัดการคำขอได้ในปัจจุบันเนื่องจากการทำงานเกินพิกัดชั่วคราวหรือการบำรุงรักษาเซิร์ฟเวอร์ unauthorized_client: ไคลเอ็นต์ไม่ได้รับอนุญาตให้ทำคำขอนี้โดยใช้วิธีการนี้ - unsupported_grant_type: ประเภทการให้สิทธิ์ไม่ได้รับการสนับสนุนโดยเซิร์ฟเวอร์การให้สิทธิ์นะ + unsupported_grant_type: ชนิดการให้การรับรองความถูกต้องไม่รองรับโดยเซิร์ฟเวอร์การรับรองความถูกต้อง unsupported_response_type: เซิร์ฟเวอร์การอนุญาตไม่รองรับชนิดการตอบสนองนี้ flash: applications: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 5fbde142b..5d3e1e367 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -22,7 +22,7 @@ eo: federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter. get_apps: Provu telefonan aplikaĵon hosted_on: "%{domain} estas nodo de Mastodon" - instance_actor_flash: 'Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti brokita se vi ne volas bloki la tutan servilon, en kiu okazo vi devas uzi blokadon de domajno. + instance_actor_flash: 'Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo, kaj devas ne esti brokita, krom se vi ne volas bloki la tutan servilon, tiuokaze vi devas uzi blokadon de domajno. ' learn_more: Lerni pli diff --git a/config/locales/he.yml b/config/locales/he.yml index 4daa4f3b6..74fee81cc 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -35,11 +35,12 @@ he: server_stats: 'סטטיסטיקות שרת:' source_code: קוד מקור status_count_after: - many: חצרוצים - one: חצרוץ - other: חצרוצים - two: חצרוצים + many: פוסטים + one: פוסט + other: פוסטים + two: פוסטים status_count_before: שכתבו + tagline: רשת חברתית מבוזרת terms: תנאי שימוש unavailable_content: שרתים מוגבלים unavailable_content_description: @@ -83,10 +84,10 @@ he: pin_errors: following: עליך לעקוב אחרי חשבון לפני שניתן יהיה להמליץ עליו posts: - many: חצרוצים - one: חצרוץ - other: חצרוצים - two: חצרוצים + many: פוסטים + one: פוסט + other: פוסטים + two: פוסטים posts_tab_heading: חצרוצים posts_with_replies: חצרוצים ותגובות roles: @@ -110,11 +111,17 @@ he: avatar: יַצְגָן by_domain: שם מתחם change_email: + changed_msg: דוא"ל שונה בהצלחה current_email: כתובת דוא"ל נוכחית label: שינוי כתובת דוא"ל משוייכת לחשבון new_email: כתובת דוא"ל חדשה submit: שלחי בקשה לשינוי דוא"ל title: שינוי כתובת דוא"ל עבור המשתמש.ת %{username} + change_role: + changed_msg: תפקיד שונה בהצלחה ! + label: שנה תפקיד + no_role: ללא תפקיד + title: שינוי תפקיד עבור המשתמש.ת %{username} confirm: אישור confirmed: אושר confirming: המאשר @@ -158,6 +165,7 @@ he: active: פעילים all: הכל pending: בהמתנה + silenced: מוגבלים suspended: מושהים title: ניהול קהילה moderation_notes: הודעות מנחה @@ -165,6 +173,7 @@ he: most_recent_ip: כתובות אחרונות no_account_selected: לא בוצעו שינויים בחשבונות ל שכן לא נבחרו חשבונות no_limits_imposed: לא הוטלו הגבלות + no_role_assigned: ללא תפקיד not_subscribed: לא רשום pending: ממתינים לסקירה perform_full_suspension: ביצוע השעייה מלאה @@ -193,6 +202,7 @@ he: reset: איפוס reset_password: אתחול סיסמא resubscribe: להרשם מחדש + role: תפקיד search: חיפוש search_same_email_domain: משתמשים אחרים מאותו דומיין דוא"ל search_same_ip: משתמשים אחרים מאותה כתובת IP @@ -252,7 +262,7 @@ he: destroy_email_domain_block: מחיקת חסימת דומיין דוא"ל destroy_instance: טיהור דומיין destroy_ip_block: מחיקת כלל IP - destroy_status: מחיקת חצרוץ + destroy_status: מחיקת פוסט destroy_unavailable_domain: מחיקת דומיין בלתי זמין disable_2fa_user: השעיית זיהוי דו-גורמי disable_custom_emoji: השעיית אמוג'י מיוחד @@ -303,7 +313,7 @@ he: destroy_email_domain_block_html: '%{name} הסיר/ה חסימה מדומיין הדוא"ל %{target}' destroy_instance_html: "%{name} טיהר/ה את הדומיין %{target}" destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}" - destroy_status_html: "%{name} הסיר/ה חצרוץ מאת %{target}" + destroy_status_html: "%{name} הסיר/ה פוסט מאת %{target}" destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}" disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}" disable_custom_emoji_html: "%{name} השבית/ה את האמוג'י %{target}" @@ -331,8 +341,8 @@ he: update_announcement_html: "%{name} עדכן/ה הכרזה %{target}" update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}" update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}" - update_status_html: "%{name} עדכן/ה חצרוץ של %{target}" - deleted_status: "(חצרוץ נמחק)" + update_status_html: "%{name} עדכן/ה פוסט של %{target}" + deleted_status: "(פוסט נמחק)" empty: לא נמצאו יומנים. filter_by_action: סינון לפי פעולה filter_by_user: סינון לפי משתמש @@ -436,6 +446,7 @@ he: destroyed_msg: חסימת שרת בוטלה domain: שרת edit: עריכת חסימת שם מתחם + existing_domain_block: כבר החלת הגבלות מחמירות יותר על %{name} existing_domain_block_html: כבר הפעלת הגבלות חמורות יותר על %{name}, עליך ראשית להסיר מעליו/ה את החסימה. new: create: יצירת חסימה @@ -666,6 +677,71 @@ he: unresolved: לא פתור updated_at: עודכן view_profile: צפה בפרופיל + roles: + add_new: הוספת תפקיד + assigned_users: + many: "%{count} משתמשים" + one: 'משתמש %{count} ' + other: "%{count} משתמשים" + two: "%{count} שני משתמשים" + categories: + administration: ניהול מערכת + devops: פיתוח + invites: הזמנות + moderation: פיקוח + special: מיוחדים + delete: מחיקה + description_html: באמצעות תפקידי משתמש, תוכלו להתאים אישית לאילו פונקציות ואזורים של מסטודון המשתמשים יוכלו לגשת + edit: עריכת התפקיד של %{name} + everyone: הרשאות ברירת מחדל + everyone_full_description_html: זהו התפקיד הבסיסי שמשפיע על כלל המשתשמשים, אפילו אלו ללא תפקיד. כל התפקידים האחרים יורשים את ההרשאות שלהם ממנו. + permissions_count: + many: "%{count} הרשאות" + one: הרשאה %{count} + other: "%{count} הרשאות" + two: "%{count} הרשאות" + privileges: + administrator: מנהל מערכת + administrator_description: משתמשים עם הרשאה זו יוכלו לעקוף כל הרשאה + delete_user_data: מחיקת כל נתוני המשתמש + delete_user_data_description: מאפשר למשתמשים למחוק נתוני משתמשים אחרים ללא דיחוי + invite_users: הזמנת משתמשים + invite_users_description: מאפשר למשתמשים להזמין אנשים חדשים לשרת + manage_announcements: ניהול הכרזות + manage_announcements_description: מאפשר למשתמשים לנהל הכרזות של השרת + manage_appeals: ניהול ערעורים + manage_appeals_description: מאפשר למשתמשים לסקור ערעורים כנגד פעולות מודרציה + manage_blocks: ניהול חסימות + manage_blocks_description: מאפשר למשתמשים לחסום ספקי דוא"ל וכתובות IP + manage_custom_emojis: ניהול סמלונים בהתאמה אישית + manage_custom_emojis_description: מאפשר למשתמשים לנהל סמלונים בהתאמה אישית של השרת + manage_federation: ניהול פדרציה + manage_federation_description: מאפשר למשתמשים לחסום או לאפשר התממשקות עם שמות מתחם אחרים + manage_invites: ניהול הזמנות + manage_invites_description: מאפשר למשתמשים לעלעל ב ולבטל קישורי הזמנה + manage_reports: ניהול דו"חות + manage_reports_description: מאפשר למשתמשים לסקור דו"חות ולבצע פעולות מודרציה בהתבסס עליהם + manage_roles: ניהול תפקידים + manage_roles_description: מאפשר למשתמשים לנהל ולמנות אחרים לתפקידים נמוכים יותר משלהם. + manage_rules: ניהול כללים + manage_rules_description: מאפשר למשתמשים לנהל את כללי השרת + manage_settings: נהל הגדרות + manage_settings_description: מאפשר למשתמשים לנהל את הגדרות השרת + manage_taxonomies: ניהול טקסונומיות + manage_taxonomies_description: מאפשר למשתמשים לסקור תוכן אופנתי (טרנדי) ולעדכן אפשרויות של תגיות. + manage_user_access: ניהול גישת משתמשים + manage_user_access_description: מאפשר למשתמשים לבטל אימות דו-שלבי של משתמשים אחרים, לשנות את כתובות הדוא"ל שלהם, ולאפס את סיסמתם + manage_users: ניהול משתמשים + manage_users_description: מאפשר למשתמשים לצפות בפרטים של משתמשים אחרים ולבצע פעולות מודרציה לפיהם + manage_webhooks: ניהול Webhooks + manage_webhooks_description: מאפשר למשתמשים להגדיר Webhooks לאירועים מנהלתיים + view_audit_log: צפייה בלוג ביקורת + view_audit_log_description: מאפשר למשתשמשים לצפות בהיסטוריה של פעולות מנהלתיות על השרת + view_dashboard: הצג לוח מחוונים + view_dashboard_description: אפשר למשתמשים לגשת ללוח המחוונים + view_devops: פיתוח + view_devops_description: מאפשר למשתמשים לגשת ללוחות המחוונים של Sidekiq ושל pgHero + title: תפקידים rules: add_new: הוספת כלל delete: מחיקה @@ -825,10 +901,10 @@ he: title: מפרסמים rejected: דחוי statuses: - allow: הרשאת חצרוץ + allow: הרשאת פוסט allow_account: הרשאת מחבר/ת description_html: אלו הם חצרוצים שהשרת שלך מכיר וזוכים להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. החצרוצים לא מוצגים עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות חצרוצים ספציפיים. - disallow: לא לאשר חצרוץ + disallow: לדחות פוסט disallow_account: לא לאשר מחבר/ת not_discoverable: המחבר/ת לא בחר/ה לאפשר את גילויים shared_by: @@ -870,13 +946,26 @@ he: empty: לא הגדרת עדיין שום טקסט מוכן מראש לאזהרה. title: ניהול טקסטים מוכנים מראש לאזהרות webhooks: + add_new: הוספת נקודת קצה delete: מחיקה disable: כיבוי disabled: כבוי + edit: עריכת נקודת קצה + empty: לא הוגדו נקודות קצה להתליות רשת עדיין. enable: אפשר enabled: פעילים + enabled_events: + many: "%{count} אירועים אופשרו" + one: אירוע %{count} מאופשר + other: "%{count} אירועים אופשרו" + two: "%{count} אירועים אופשרו" events: אירועים + new: Webhook חדש + rotate_secret: החלף מפתח + secret: מפתח הרשמה status: סטטוס + title: התליות רשת + webhook: התליית רשת admin_mailer: new_appeal: actions: @@ -905,7 +994,7 @@ he: title: נושאים חמים new_trending_statuses: no_approved_statuses: אין כרגע שום חצרוצים חמים מאושרים. - requirements: כל אחד מהמועמדים האלה עשוי לעבור החצרוץ החם המאושר מדרגה %{rank}, שההא כרגע %{lowest_status_url} עם ציון של %{lowest_status_score}. + requirements: כל אחד מהמועמדים האלה עשוי לעבור את הפוסט החם המאושר מדרגה %{rank}, שהוא כרגע %{lowest_status_url} עם ציון של %{lowest_status_score}. title: חצרוצים לוהטים new_trending_tags: no_approved_tags: אין כרגע שום האשתגיות חמות מאושרות. @@ -930,14 +1019,14 @@ he: guide_link: https://crowdin.com/project/mastodon guide_link_text: כולם יכולים לתרום. sensitive_content: תוכן רגיש - toot_layout: פריסת חצרוץ + toot_layout: פריסת פוסט application_mailer: notification_preferences: שינוי העדפות דוא"ל salutation: "%{name}," settings: 'שינוי הגדרות דוא"ל: %{link}' view: 'תצוגה:' view_profile: צפיה בפרופיל - view_status: הצגת חצרוץ + view_status: הצגת פוסט applications: created: ישום נוצר בהצלחה destroyed: ישום נמחק בהצלחה @@ -1061,15 +1150,17 @@ he: appealed_msg: הערעור שלך הוגש. במידה ויאושר, תיודע. appeals: submit: הגש ערעור + approve_appeal: קבלת ערעור associated_report: הדו"ח המשויך created_at: מתאריך description_html: אלו הן הפעולות שננקטו כנגד חשבונך והאזהרות שנשלחו אליך על ידי צוות %{instance}. recipient: הנמען - status: 'חצרוץ #%{id}' - status_removed: החצרוץ כבר הוסר מהמערכת + reject_appeal: דחיית ערעור + status: 'פוסט #%{id}' + status_removed: הפוסט כבר הוסר מהמערכת title: "%{action} מתאריך %{date}" title_actions: - delete_statuses: הסרת חצרוץ + delete_statuses: הסרת פוסט disable: הקפאת חשבון mark_statuses_as_sensitive: סימון חצרוצים כרגישים none: אזהרה @@ -1127,14 +1218,26 @@ he: public: פידים פומביים thread: שיחות edit: + add_keyword: הוספת מילת מפתח + keywords: מילות מפתח title: ערוך מסנן errors: + deprecated_api_multiple_keywords: לא ניתן לשנות פרמטרים אלו מהיישומון הזה בגלל שהם חלים על יותר ממילת מפתח אחת. ניתן להשתמש ביישומון מעודכן יותר או בממשק הוובי. invalid_context: לא סופק הקשר או הקשר לא תקין index: + contexts: פילטרים ב %{contexts} delete: למחוק empty: אין לך מסננים. + expires_in: פג תוקף ב %{distance} + expires_on: פג תוקף ב %{date} + keywords: + many: "%{count} מילות מפתח" + one: מילת מפתח %{count} + other: "%{count} מילות מפתח" + two: "%{count} מילות מפתח" title: מסננים new: + save: שמירת מסנן חדש title: הוספת מסנן חדש footer: developers: מפתחות @@ -1215,7 +1318,7 @@ he: title: הסטוריית אימותים media_attachments: validations: - images_and_video: לא ניתן להוסיף וידאו לחצרוץ שכבר מכיל תמונות + images_and_video: לא ניתן להוסיף וידאו לפוסט שכבר מכיל תמונות not_ready: לא ניתן להצמיד קבצים שהעלאתם לא הסתיימה. נסה/י שוב בעוד רגע! too_many: לא ניתן להוסיף יותר מארבעה קבצים migrations: @@ -1257,6 +1360,8 @@ he: copy_account_note_text: 'חשבון זה הועבר מ-%{acct}, הנה הערותיך הקודמות לגביהם:' notification_mailer: admin: + report: + subject: '%{name} שלח/ה דו"ח' sign_up: subject: "%{name} נרשמו" digest: @@ -1343,7 +1448,7 @@ he: too_many_options: לא יכול להכיל יותר מ-%{max} פריטים preferences: other: שונות - posting_defaults: ברירות מחדל לחצרוץ + posting_defaults: ברירות מחדל לפוסטים public_timelines: פידים פומביים reactions: errors: @@ -1376,13 +1481,13 @@ he: remote_interaction: favourite: proceed: המשך לחיבוב - prompt: 'ברצונך לחבב חצרוץ זה:' + prompt: 'ברצונך לחבב פוסט זה:' reblog: proceed: המשיכו להדהוד - prompt: 'ברצונך להדהד חצרוץ זה:' + prompt: 'ברצונך להדהד פוסט זה:' reply: proceed: המשיבו לתגובה - prompt: 'ברצונך להשיב לחצרוץ זה:' + prompt: 'ברצונך להשיב לפוסט זה:' reports: errors: invalid_rules: לא מתייחס לכללים קבילים @@ -1488,7 +1593,7 @@ he: two: 'מכיל את ההאשתגיות האסורות: %{tags}' edited_at_html: נערך ב-%{date} errors: - in_reply_not_found: נראה שהחצרוץ שאת/ה מנסה להגיב לו לא קיים. + in_reply_not_found: נראה שהפוסט שאת/ה מנסה להגיב לו לא קיים. open_in_web: פתח ברשת over_character_limit: חריגה מגבול התווים של %{max} pin_errors: @@ -1558,7 +1663,7 @@ he: min_reblogs: שמור חצרוצים מהודהדים לפחות min_reblogs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר ההדהודים שקיבלו stream_entries: - pinned: חצרוץ מוצמד + pinned: פוסט נעוץ reblogged: הודהד sensitive_content: תוכן רגיש strikes: diff --git a/config/locales/id.yml b/config/locales/id.yml index 2bf3e7d13..f14f4cf9f 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -97,11 +97,14 @@ id: avatar: Avatar by_domain: Domian change_email: + changed_msg: כתובת דוא"ל שונתה בהצלחה ! current_email: Email saat ini label: Ganti email new_email: Email baru submit: Ganti email title: Ganti email untuk %{username} + change_role: + changed_msg: תפקיד שונה בהצלחה ! confirm: Konfirmasi confirmed: Dikonfirmasi confirming: Mengkonfirmasi @@ -624,6 +627,8 @@ id: unresolved: Belum Terseleseikan updated_at: Diperbarui view_profile: Lihat profil + roles: + edit: ערכי את התפקיד של '%{name}' rules: add_new: Tambah aturan delete: Hapus diff --git a/config/locales/ja.yml b/config/locales/ja.yml index cb7a1526c..e4c7b6d11 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -620,6 +620,25 @@ ja: unresolved: 未解決 updated_at: 更新日時 view_profile: プロフィールを表示 + roles: + privileges: + manage_rules: ルールの管理 + manage_rules_description: ユーザーがサーバールールを変更できるようにします + manage_settings: 設定の管理 + manage_settings_description: ユーザーがサイト設定を変更できるようにします + manage_taxonomies_description: トレンドコンテンツの確認とハッシュタグの設定の更新 + manage_user_access: アクセス権を管理 + manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。 + manage_users: ユーザーの管理 + manage_webhooks: Webhook の管理 + manage_webhooks_description: 管理者イベントのWebhookを設定できます。 + view_audit_log: 監査ログの表示 + view_audit_log_description: ユーザーがサーバー上で管理アクションの履歴を表示できるようにします + view_dashboard: ダッシュボードの表示 + view_dashboard_description: ユーザーがダッシュボードやさまざまなメトリクスにアクセスできるようにします + view_devops: 開発者 + view_devops_description: Sidekiq と pgHero ダッシュボードにアクセスできるようにします + title: 権限 rules: add_new: ルールを追加 delete: 削除 @@ -820,6 +839,7 @@ ja: enabled: アクティブ events: イベント new: 新しいwebhook + status: ステータス title: Webhooks webhook: Webhook admin_mailer: @@ -1076,12 +1096,16 @@ ja: errors: invalid_context: 対象がないか無効です index: + contexts: "%{contexts} のフィルター" delete: 削除 empty: フィルターはありません。 + expires_in: "%{distance} で期限切れ" + expires_on: 有効期限 %{date} keywords: other: "%{count}件のキーワード" title: フィルター new: + save: 新規フィルターを保存 title: 新規フィルターを追加 footer: developers: 開発者向け @@ -1198,6 +1222,8 @@ ja: copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。 notification_mailer: admin: + report: + subject: "%{name} がレポートを送信しました" sign_up: subject: "%{name}さんがサインアップしました" digest: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 2d49d756d..9c20a8f8a 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -695,6 +695,11 @@ pl: edit: Edytuj rolę '%{name}' everyone: Domyślnie uprawnienia everyone_full_description_html: To jest rola podstawowa wpływająca na wszystkich użytkowników, nawet tych, którzy nie mają przypisanej roli. Wszystkie inne role dziedziczą z niej uprawnienia. + permissions_count: + few: "%{count} uprawnień" + many: "%{count} uprawnień" + one: "%{count} uprawnienie" + other: "%{count} uprawnień" privileges: administrator: Administrator administrator_description: Użytkownicy z tym uprawnieniem omijają każde uprawnienie @@ -725,11 +730,15 @@ pl: manage_taxonomies: Zarządzaj taksonomiami manage_taxonomies_description: Pozwala użytkownikom przeglądać najpopularniejsze treści i aktualizować ustawienia hasztagów manage_user_access: Zarządzaj dostępem użytkownika + manage_user_access_description: Pozwala użytkownikom na wyłączenie uwierzytelniania dwuskładnikowego innych użytkowników, zmianę adresu e-mail i zresetowanie hasła manage_users: Zarządzanie użytkownikami + manage_users_description: Pozwala użytkownikom na oglądanie szczegółów innych użytkowników i wykonywanie na ich kontach działań moderacyjnych manage_webhooks: Zarządzanie webhookami + manage_webhooks_description: Pozwala użytkownikom na konfigurację webhooków dla wydarzeń administracyjnych view_audit_log: Wyświetl dziennik zdarzeń view_audit_log_description: Pozwala użytkownikom zobaczyć historię działań administracyjnych na serwerze view_dashboard: Wyświetl panel + view_dashboard_description: Pozwala użytkownikom na dostęp do panelu i różnych metryk view_devops: Devops view_devops_description: Pozwala użytkownikom na dostęp do paneli Sidekiq i pgHero title: Role diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index c7fe6026c..fe0ed1a77 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -46,7 +46,7 @@ he: locale: שפת ממשק המשתמש, הדוא"ל וההתראות בדחיפה locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת password: נא להשתמש בלפחות 8 תוים - phrase: התאמה תמצא ללא תלות באזהרת תוכן בחצרוץ + phrase: התאמה תמצא ללא תלות באזהרת תוכן בפוסט scopes: לאיזה ממשק יורשה היישום לגשת. בבחירת תחום כללי, אין צורך לבחור ממשקים ספציפיים. setting_aggregate_reblogs: לא להראות הדהודים של חצרוצים שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן) setting_always_send_emails: בדרך כלל התראות דוא"ל לא יישלחו בזמן שימוש פעיל במסטודון @@ -56,7 +56,7 @@ he: setting_display_media_show_all: גלה מדיה תמיד setting_hide_network: עוקבייך ונעקבייך יוסתרו בפרופילך setting_noindex: משפיע על הפרופיל הציבורי שלך ועמודי ההודעות - setting_show_application: היישום בו נעשה שימוש כדי לחצרץ יופיע בתצוגה המפורטת של החצרוץ + setting_show_application: היישום בו נעשה שימוש כדי לפרסם פוסט יופיע בתצוגה המפורטת של הפוסט setting_use_blurhash: הגראדיינטים מבוססים על תוכן התמונה המוסתרת, אבל מסתירים את כל הפרטים setting_use_pending_items: הסתר עדכוני פיד מאחורי קליק במקום לגלול את הפיד אוטומטית username: שם המשתמש שלך יהיה ייחודי ב-%{domain} @@ -68,6 +68,11 @@ he: with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן featured_tag: name: 'אולי תרצה/י להשתמש באחד מאלה:' + filters: + action: בחרו איזו פעולה לבצע כאשר פוסט מתאים למסנן + actions: + hide: הסתר את התוכן המסונן, כאילו לא היה קיים + warn: הסתר את התוכן המסונן מאחורי אזהרה עם כותרת המסנן form_challenge: current_password: את.ה נכנס. ת לאזור מאובטח imports: @@ -91,8 +96,16 @@ he: name: ניתן רק להחליף בין אותיות קטנות וגדולות, למשל כדי לשפר את הקריאות user: chosen_languages: אם פעיל, רק חצרוצים בשפות הנבחרות יוצגו לפידים הפומביים + role: התפקיד שולט על אילו הרשאות יש למשתמש + user_role: + color: צבע לתפקיד בממשק המשתמש, כ RGB בפורמט הקסדצימלי + highlighted: מאפשר נראות ציבורית של התפקיד + name: שם ציבורי של התפקיד, במידה והתפקיד מוגדר ככזה שמופיע כתג + permissions_as_keys: למשתמשים בתפקיד זה תהיה גישה ל... + position: תפקיד גבוה יותר מכריע בחילוקי דעות במצבים מסוימים. פעולות מסוימות יכולות להתבצע רק על תפקידים בדרגה נמוכה יותר webhook: events: בחר אירועים לשליחה + url: היעד שאליו יישלחו אירועים labels: account: fields: @@ -158,7 +171,7 @@ he: setting_auto_play_gif: ניגון אוטומטי של גיפים setting_boost_modal: הצגת דיאלוג אישור לפני הדהוד setting_crop_images: קטום תמונות בחצרוצים לא מורחבים ל 16 על 9 - setting_default_language: שפת חצרוץ + setting_default_language: שפת ברירת מחדל לפוסט setting_default_privacy: פרטיות ההודעות setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ @@ -171,7 +184,7 @@ he: setting_hide_network: להחביא את הגרף החברתי שלך setting_noindex: לבקש הסתרה ממנועי חיפוש setting_reduce_motion: הפחתת תנועה בהנפשות - setting_show_application: הצגת הישום ששימש לחצרוץ + setting_show_application: הצגת הישום ששימש לפרסום הפוסט setting_system_font_ui: להשתמש בגופן ברירת המחדל של המערכת setting_theme: ערכת העיצוב של האתר setting_trends: הצגת הנושאים החמים @@ -180,6 +193,7 @@ he: setting_use_pending_items: מצב איטי severity: חומרה sign_in_token_attempt: קוד אבטחה + title: כותרת type: סוג יבוא username: שם משתמש username_or_email: שם משתמש או דוא"ל @@ -188,6 +202,10 @@ he: with_dns_records: לכלול רשומות MX וכתובות IP של הדומיין featured_tag: name: האשתג + filters: + actions: + hide: הסתרה כוללת + warn: הסתרה עם אזהרה interactions: must_be_follower: חסימת התראות משאינם עוקבים must_be_following: חסימת התראות משאינם נעקבים @@ -206,12 +224,12 @@ he: notification_emails: appeal: מישהם מערערים על החלטת מנהל קהילה digest: שליחת הודעות דוא"ל מסכמות - favourite: שליחת דוא"ל כשמחבבים חצרוץ + favourite: שליחת דוא"ל כשמחבבים פוסט follow: שליחת דוא"ל כשנוספות עוקבות follow_request: שליחת דוא"ל כשמבקשים לעקוב mention: שליחת דוא"ל כשפונים אלייך pending_account: נדרשת סקירה של חשבון חדש - reblog: שליחת דוא"ל כשמהדהדים חצרוץ שלך + reblog: שליחת דוא"ל כשמהדהדים פוסט שלך report: דו"ח חדש הוגש trending_tag: נושאים חמים חדשים דורשים סקירה rule: @@ -221,6 +239,17 @@ he: name: האשתג trendable: הרשה/י להאשתג זה להופיע תחת נושאים חמים usable: הרשה/י לחצרוצים להכיל האשתג זה + user: + role: תפקיד + user_role: + color: צבע תג + highlighted: הצג תפקיד כתג בפרופיל משתמש + name: שם + permissions_as_keys: הרשאות + position: עדיפות + webhook: + events: אירועים מאופשרים + url: כתובת URL של נקודת הקצה 'no': לא recommended: מומלץ required: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index cde47dbd0..5e8ef67b4 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -91,6 +91,10 @@ ja: name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます user: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります + user_role: + highlighted: これにより、役割が公開されます。 + name: 役割をバッジ表示する際の表示名 + permissions_as_keys: この役割を持つユーザーは次の機能にアクセスできます labels: account: fields: @@ -178,6 +182,7 @@ ja: setting_use_pending_items: 手動更新モード severity: 重大性 sign_in_token_attempt: セキュリティコード + title: タイトル type: インポートする項目 username: ユーザー名 username_or_email: ユーザー名またはメールアドレス @@ -219,6 +224,14 @@ ja: name: ハッシュタグ trendable: トレンドへの表示を許可する usable: 投稿への使用を許可する + user: + role: 役割 + user_role: + color: バッジの色 + highlighted: プロフィールに役割のバッジを表示する + name: 名前 + permissions_as_keys: 権限 + position: 優先度 webhook: events: 有効なイベント url: エンドポイントURL diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 1be350dca..91a472b21 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -96,7 +96,12 @@ pl: name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne user: chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu + role: Rola kontroluje uprawnienia użytkownika user_role: + color: Kolor używany dla roli w całym interfejsie użytkownika, wyrażony jako RGB w formacie szesnastkowym + highlighted: To sprawia, że rola jest widoczna publicznie + name: Publiczna nazwa roli, jeśli włączone jest wyświetlanie odznaki + permissions_as_keys: Użytkownicy z tą rolą będą mieli dostęp do... position: Wyższa rola decyduje o rozwiązywaniu konfliktów w pewnych sytuacjach. Niektóre działania mogą być wykonywane tylko na rolach z niższym priorytetem webhook: events: Wybierz zdarzenia do wysłania diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index b542eba54..b032295ba 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -81,7 +81,7 @@ th: text: นี่จะช่วยให้เราตรวจทานใบสมัครของคุณ ip_block: comment: ไม่จำเป็น จดจำเหตุผลที่คุณเพิ่มกฎนี้ - expires_in: ที่อยู่ IP เป็นทรัพยากร บางครั้งมีการแบ่งปันและมักเปลี่ยนมือ ด้วยเหตุผลนี้ จึงไม่แนะนำให้บล็อก IP + expires_in: ที่อยู่ IP เป็นทรัพยากรที่มีจำกัด บางครั้งที่อยู่ใช้ร่วมกันและมักเปลี่ยนมือ ด้วยเหตุผลนี้ การปิดกั้น IP แบบไม่มีกำหนดจึงไม่แนะนำ ip: ป้อนที่อยู่ IPv4 หรือ IPv6 คุณสามารถปิดกั้นทั้งช่วงได้โดยใช้ไวยากรณ์ CIDR ระวังอย่าล็อคตัวคุณเองออก! severities: no_access: ปิดกั้นการเข้าถึงทรัพยากรทั้งหมด @@ -91,21 +91,21 @@ th: text: อธิบายกฎหรือข้อกำหนดสำหรับผู้ใช้ในเซิร์ฟเวอร์นี้ พยายามทำให้กฎหรือข้อกำหนดสั้นและเรียบง่าย sessions: otp: 'ป้อนรหัสสองปัจจัยที่สร้างโดยแอปในโทรศัพท์ของคุณหรือใช้หนึ่งในรหัสกู้คืนของคุณ:' - webauthn: หากเป็นคีย์ USB อย่าลืมเสียบไว้ และหากจำเป็น ให้แตะคีย์นั้นไว้นะ + webauthn: หากกุญแจความปลอดภัยเป็นกุญแจ USB ตรวจสอบให้แน่ใจว่าได้เสียบกุญแจ และหากจำเป็น ให้แตะกุญแจ tag: name: คุณสามารถเปลี่ยนได้เฉพาะตัวพิมพ์ใหญ่เล็กของตัวอักษรเท่านั้น ตัวอย่างเช่น เพื่อทำให้ตัวอักษรอ่านได้ง่ายขึ้น user: chosen_languages: เมื่อกาเครื่องหมาย จะแสดงเฉพาะโพสต์ในภาษาที่เลือกในเส้นเวลาสาธารณะเท่านั้น - role: ควบคุมบทบาท ว่าผู้ใช้มีสิทธิใดบ้าง + role: บทบาทควบคุมว่าสิทธิอนุญาตใดที่ผู้ใช้มี user_role: - color: สีที่จะใช้สำหรับบทบาทตลอดทั้ง UI เป็น RGB ในรูปแบบฐานสิบหก - highlighted: ทำให้บทบาทนี้ปรากฏต่อสู่สาธารณะ - name: ชื่อสาธารณะของบทบาท หากกำหนดบทบาทให้แสดงเป็นตราสัญลักษณ์ - permissions_as_keys: ผู้ใช้ที่มีบทบาทนี้จะมีสิทธิ์เข้าถึง... - position: บทบาทที่สูงขึ้นอาจจะตัดสินใจแก้ไขข้อขัดแย้งในบางสถานการณ์ การดำเนินการบางอย่างสามารถทำได้เฉพาะกับบทบาทที่มีลำดับความสำคัญต่ำกว่า + color: สีที่ใช้สำหรับบทบาททั่วทั้ง UI เป็น RGB ในรูปแบบฐานสิบหก + highlighted: สิ่งนี้ทำให้บทบาทปรากฏเป็นสาธารณะ + name: ชื่อสาธารณะของบทบาท หากมีการตั้งบทบาทให้แสดงเป็นป้าย + permissions_as_keys: ผู้ใช้ที่มีบทบาทนี้จะสามารถเข้าถึง... + position: บทบาทที่สูงขึ้นตัดสินใจการแก้ปัญหาข้อขัดแย้งในบางสถานการณ์ การกระทำบางอย่างสามารถทำได้เฉพาะกับบทบาทที่มีระดับความสำคัญต่ำกว่าเท่านั้น webhook: events: เลือกเหตุการณ์ที่จะส่ง - url: กิจกรรมจะถูกส่งไปที่ + url: จะส่งเหตุการณ์ไปยัง labels: account: fields: @@ -137,7 +137,7 @@ th: starts_at: การเริ่มต้นเหตุการณ์ text: ประกาศ appeal: - text: อธิบายว่าเหตุใดจึงควรกลับคำตัดสินนี้ + text: อธิบายเหตุผลที่ควรกลับการตัดสินใจนี้ defaults: autofollow: เชิญให้ติดตามบัญชีของคุณ avatar: ภาพประจำตัว @@ -242,13 +242,13 @@ th: user: role: บทบาท user_role: - color: สีของตรา - highlighted: แสดงบทบาทเป็นเครื่องหมายบนโปรไฟล์ผู้ใช้ + color: สีป้าย + highlighted: แสดงบทบาทเป็นป้ายในโปรไฟล์ผู้ใช้ name: ชื่อ permissions_as_keys: สิทธิอนุญาต position: ระดับความสำคัญ webhook: - events: เปิดใช้งานอีเว้น + events: เหตุการณ์ที่เปิดใช้งาน url: URL ปลายทาง 'no': ไม่ recommended: แนะนำ diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index d1124e3b6..f2e728d2a 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -102,6 +102,7 @@ tr: highlighted: Bu rolü herkese açık hale getirir name: Rolün, eğer rozet olarak görüntülenmesi ayarlandıysa kullanılacak herkese açık ismi permissions_as_keys: Bu role sahip kullanıcıların şunlara erişimi var... + position: Belirli durumlarda çatışmayı çözmek için daha yüksek rol belirleyicidir. Bazı eylemler ancak daha düşük öncelikteki rollere uygulanabilir webhook: events: Gönderilecek etkinlikleri seçin url: Olayların gönderileceği yer diff --git a/config/locales/th.yml b/config/locales/th.yml index e2f1db855..28ffeb462 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -22,7 +22,7 @@ th: federation_hint_html: ด้วยบัญชีที่ %{instance} คุณจะสามารถติดตามผู้คนในเซิร์ฟเวอร์ Mastodon และอื่น ๆ get_apps: ลองแอปมือถือ hosted_on: Mastodon ที่โฮสต์ที่ %{domain} - instance_actor_flash: 'บัญชีนี้เป็นนักแสดงเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เอง ไม่ใช่ผู้ใช้รายบุคคล แต่มันก็ถูกใช้เพื่อวัตถุประสงค์ในการรวมกลุ่มและไม่ควรถูกบล็อก เว้นแต่คุณต้องการบล็อกทั้งอินสแตนซ์นั้น ซึ่งในกรณีนี้คุณควรใช้บล็อกโดเมนนะ + instance_actor_flash: 'บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการปิดกั้นเว้นแต่คุณต้องการปิดกั้นทั้งอินสแตนซ์ ในกรณีนี้คุณควรใช้การปิดกั้นโดเมน ' learn_more: เรียนรู้เพิ่มเติม @@ -49,7 +49,7 @@ th: silenced_title: เซิร์ฟเวอร์ที่จำกัดอยู่ suspended: 'จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์เหล่านี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์เหล่านี้เป็นไปไม่ได้:' suspended_title: เซิร์ฟเวอร์ที่ระงับอยู่ - unavailable_content_html: โดยทั่วไปแล้ว Mastodon อนุญาตให้คุณดูเนื้อหาและโต้ตอบกับผู้ใช้งานจากเซิร์ฟเวอร์อื่นใน fediverse เหล่านี้เป็นข้อยกเว้นที่เกิดขึ้นบนเซิร์ฟเวอร์นี้โดยเฉพาะ + unavailable_content_html: โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ user_count_after: other: ผู้ใช้ user_count_before: บ้านของ @@ -62,7 +62,7 @@ th: followers: other: ผู้ติดตาม following: กำลังติดตาม - instance_actor_flash: บัญชีนี้เป็นนักแสดงเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เอง แต่ก็ไม่ใช่ผู้ใช้รายบุคคล แต่มันถูกใช้เพื่อวัตถุประสงค์ของการรวมกลุ่มและไม่ควรถูกระงับ + instance_actor_flash: บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการระงับ joined: เข้าร่วมเมื่อ %{date} last_active: ใช้งานล่าสุด link_verified_on: ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ %{date} @@ -207,8 +207,8 @@ th: subscribe: บอกรับ suspend: ระงับ suspended: ระงับอยู่ - suspension_irreversible: ข้อมูลของบัญชีนี้ถูกลบไม่สามารถย้อนกลับได้ คุณสามารถระงับบัญชีเพื่อให้ใช้งานได้ แต่จะไม่กู้คืนข้อมูลใดๆทั้งสิ้น ที่เคยมีอยู่ก่อนหน้านี้ - suspension_reversible_hint_html: บัญชีถูกระงับ และข้อมูลจะถูกลบออกอย่างสมบูรณ์ในวันที่ %{date} ก่อนหน้านั้น บัญชีสามารถกู้คืนได้โดยไม่มีผลร้ายใดๆทั้งสิ้น ถ้าหากคุณต้องการลบข้อมูลของบัญชีทั้งหมดในทันที คุณสามารถทำได้ด้านล่างนี้ + suspension_irreversible: ลบข้อมูลของบัญชีนี้อย่างถาวรแล้ว คุณสามารถเลิกระงับบัญชีเพื่อทำให้บัญชีใช้งานได้แต่จะไม่กู้คืนข้อมูลใด ๆ ที่บัญชีมีก่อนหน้านี้ + suspension_reversible_hint_html: ระงับบัญชีแล้ว และจะเอาข้อมูลออกอย่างสมบูรณ์ใน %{date} จนกว่าจะถึงตอนนั้น สามารถกู้คืนบัญชีได้โดยไม่มีผลร้ายใด ๆ หากคุณต้องการเอาข้อมูลของบัญชีทั้งหมดออกในทันที คุณสามารถทำได้ด้านล่าง title: บัญชี unblock_email: เลิกปิดกั้นที่อยู่อีเมล unblocked_email_msg: เลิกปิดกั้นที่อยู่อีเมลของ %{username} สำเร็จ @@ -299,7 +299,7 @@ th: destroy_instance_html: "%{name} ได้ล้างข้อมูลโดเมน %{target}" destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}" destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก" - destroy_unavailable_domain_html: "%{name} ได้พักการจัดส่งไปยังโดเมน %{target}" + destroy_unavailable_domain_html: "%{name} ได้ทำการจัดส่งไปยังโดเมน %{target} ต่อ" disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}" disable_custom_emoji_html: "%{name} ได้ปิดใช้งานอีโมจิ %{target}" disable_sign_in_token_auth_user_html: "%{name} ได้ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับ %{target}" @@ -419,8 +419,8 @@ th: destroyed_msg: เลิกทำการปิดกั้นโดเมนแล้ว domain: โดเมน edit: แก้ไขการปิดกั้นโดเมน - existing_domain_block: คุณได้กำหนดขีดจำกัดที่เข้มงวดขึ้นแล้วบน %{name} - existing_domain_block_html: คุณได้กำหนดขีดจำกัดที่เข้มงวดขึ้นใน %{name} แล้วคุณต้อง unblock ก่อน + existing_domain_block: คุณได้กำหนดขีดจำกัดที่เข้มงวดกว่าใน %{name} ไปแล้ว + existing_domain_block_html: คุณได้กำหนดขีดจำกัดที่เข้มงวดกว่าใน %{name} ไปแล้ว คุณจำเป็นต้อง เลิกปิดกั้น ก่อน new: create: สร้างการปิดกั้น hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะใช้วิธีการควบคุมที่เฉพาะเจาะจงกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ @@ -431,11 +431,11 @@ th: suspend: ระงับ title: การปิดกั้นโดเมนใหม่ obfuscate: ทำให้ชื่อโดเมนคลุมเครือ - obfuscate_hint: อาจมีผลทำให้ชื่อโดเมนสับสนบางส่วนในรายการหากเปิดใช้งานการโฆษณารายการข้อจำกัดของโดเมน + obfuscate_hint: ปิดบังชื่อโดเมนบางส่วนในรายการหากมีการเปิดใช้งานการประกาศรายการการจำกัดโดเมน private_comment: ความคิดเห็นส่วนตัว - private_comment_hint: แสดงความคิดเห็นเกี่ยวกับข้อจำกัดของโดเมนนี้สำหรับการใช้งานภายในโดยผู้ดูแล + private_comment_hint: ความคิดเห็นเกี่ยวกับการจำกัดโดเมนนี้สำหรับการใช้งานภายในโดยผู้ควบคุม public_comment: ความคิดเห็นสาธารณะ - public_comment_hint: แสดงความคิดเห็นเกี่ยวกับข้อจำกัดโดเมนนี้สำหรับบุคคลทั่วไป หากต้องการโฆษณารายการข้อจำกัดโดเมนเปิดใช้งานอยู่ + public_comment_hint: ความคิดเห็นเกี่ยวกับการจำกัดโดเมนนี้สำหรับสาธารณชนทั่วไป หากมีการเปิดใช้งานการประกาศรายการการจำกัดโดเมน reject_media: ปฏิเสธไฟล์สื่อ reject_media_hint: เอาไฟล์สื่อที่จัดเก็บไว้ในเซิร์ฟเวอร์ออกและปฏิเสธที่จะดาวน์โหลดไฟล์ใด ๆ ในอนาคต ไม่เกี่ยวข้องกับการระงับ reject_reports: ปฏิเสธรายงาน @@ -444,6 +444,8 @@ th: view: ดูการปิดกั้นโดเมน email_domain_blocks: add_new: เพิ่มใหม่ + attempts_over_week: + other: "%{count} ความพยายามในการลงทะเบียนในช่วงสัปดาห์ที่ผ่านมา" created_msg: ปิดกั้นโดเมนอีเมลสำเร็จ delete: ลบ dns: @@ -455,9 +457,11 @@ th: resolve: แปลงที่อยู่โดเมน title: ปิดกั้นโดเมนอีเมลใหม่ no_email_domain_block_selected: ไม่มีการเปลี่ยนแปลงการปิดกั้นโดเมนอีเมลเนื่องจากไม่มีการเลือก + resolved_dns_records_hint_html: ชื่อโดเมนจะแก้ไขเป็นโดเมน MX ต่อไปนี้ ซึ่งแต่ท้ายที่สุดแล้วคุณจะต้องรับผิดชอบในการยอมรับอีเมล การบล็อกโดเมน MX จะบล็อกการลงชื่อสมัครใช้จากที่อยู่อีเมลใดๆ ที่ใช้โดเมน MX เดียวกัน ถึงแม้ว่าชื่อโดเมนที่มองเห็นได้นั้นจะต่างกัน ระวังอย่าบล็อกผู้ให้บริการอีเมลรายใหญ่ resolved_through_html: แปลงที่อยู่ผ่าน %{domain} title: โดเมนอีเมลที่ปิดกั้นอยู่ follow_recommendations: + description_html: "จะทำตามคำแนะนำช่วยให้ผู้ใช้ใหม่ให้พบเนื้อหาที่น่าสนใจได้อย่างรวดเร็ว เมื่อผู้ใช้ไม่ได้โต้ตอบใดๆกับผู้อื่นมากพอที่จะสร้างคำแนะนำส่วนบุคคลให้กดติดตาม ขอแนะนำให้ใช้บัญชีเหล่านี้แทน พวกเขาจะคำนวณใหม่ทุกๆวันจากบัญชีต่างๆ ที่มีการมีส่วนร่วมล่าสุดและจำนวนผู้ติดตามในพื้นที่สูงสุดสำหรับภาษาที่คุณกำหนดไว้" language: สำหรับภาษา status: สถานะ suppress: ระงับคำแนะนำการติดตาม @@ -624,7 +628,22 @@ th: permissions_count: other: "%{count} สิทธิอนุญาต" privileges: + administrator: ผู้ดูแล + delete_user_data: ลบข้อมูลผู้ใช้ + invite_users: เชิญผู้ใช้ + manage_announcements: จัดการประกาศ + manage_appeals: จัดการการอุทธรณ์ + manage_blocks: จัดการการปิดกั้น + manage_custom_emojis: จัดการอีโมจิที่กำหนดเอง + manage_federation: จัดการการติดต่อกับภายนอก + manage_invites: จัดการคำเชิญ + manage_reports: จัดการรายงาน manage_roles: จัดการบทบาท + manage_rules: จัดการกฎ + manage_settings: จัดการการตั้งค่า + manage_user_access: จัดการการเข้าถึงของผู้ใช้ + manage_users: จัดการผู้ใช้ + view_devops_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ด Sidekiq และ pgHero title: บทบาท rules: add_new: เพิ่มกฎ @@ -815,6 +834,8 @@ th: edit: แก้ไขปลายทาง enable: เปิดใช้งาน enabled: ใช้งานอยู่ + enabled_events: + other: "%{count} เหตุการณ์ที่เปิดใช้งาน" events: เหตุการณ์ status: สถานะ admin_mailer: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 47a1ab29f..12b371bf3 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -668,6 +668,7 @@ zh-CN: manage_custom_emojis: 管理自定义表情 manage_custom_emojis_description: 允许用户管理服务器上的自定义表情 manage_federation: 管理联邦 + manage_federation_description: 允许用户阻止或允许使用其他域切换并控制可交付性 manage_invites: 管理邀请 manage_invites_description: 允许用户浏览和停用邀请链接 manage_reports: 管理报告 @@ -678,6 +679,10 @@ zh-CN: manage_rules_description: 允许用户更改服务器规则 manage_settings: 管理设置 manage_settings_description: 允许用户更改站点设置 + manage_taxonomies: 管理分类法 + manage_taxonomies_description: 允许用户查看热门内容并更新标签设置 + manage_user_access: 管理访问 + manage_user_access_description: 允许用户禁用其他用户的双重身份验证, 更改他们的电子邮件地址, 并重置他们的密码 manage_users: 管理用户 manage_users_description: 允许用户查看其他用户信息并对他们执行审核操作 manage_webhooks: 管理网钩 @@ -686,6 +691,8 @@ zh-CN: view_audit_log_description: 允许用户在服务器上查看管理操作历史 view_dashboard: 查看仪表板 view_dashboard_description: 允许用户访问仪表盘和各种指标 + view_devops: 开发运维 + title: 角色 rules: add_new: 添加规则 delete: 删除 @@ -881,10 +888,20 @@ zh-CN: empty: 你尚未定义任何警告预设。 title: 管理预设警告 webhooks: + add_new: 端点 delete: 删除 + description_html: "webhook 使Mastodon能够推送 关于所选事件的实时通知 到您自己的应用程序。 所以您的应用程序可以自动触发反应 。" disable: 禁用 disabled: 已禁用 + empty: 您尚未配置任何Web 钩子端点。 enable: 启用 + enabled: 活跃 + enabled_events: + other: "%{count} 启用的事件" + events: 事件 + new: 新建网钩 + rotate_secret: 旋转密钥 + secret: 签名密钥 status: 状态 title: 网钩 webhook: 网钩 @@ -1144,10 +1161,14 @@ zh-CN: keywords: 关键词 title: 编辑过滤器 errors: + deprecated_api_multiple_keywords: 这些参数不能从此应用程序更改,因为它们应用于一个以上的过滤关键字。 使用较新的应用程序或网页界面。 invalid_context: 过滤器场景没有或无效 index: + contexts: 在 %{contexts} 中的过滤器 delete: 删除 empty: 你没有过滤器。 + expires_in: 在 %{distance} 后过期 + expires_on: "%{date} 后到期" keywords: other: "%{count} 关键词" title: 过滤器 From 991349e6e27f90b671c7892cfbfc74c5a1300f8b Mon Sep 17 00:00:00 2001 From: prplecake Date: Sat, 30 Jul 2022 20:00:00 -0500 Subject: [PATCH 015/280] [Glitch] Add ability to follow hashtags in web UI --- .../flavours/glitch/actions/tags.js | 92 +++++++++++++++++++ .../glitch/features/hashtag_timeline/index.js | 82 +++++++++++++---- .../flavours/glitch/reducers/index.js | 2 + .../flavours/glitch/reducers/tags.js | 25 +++++ 4 files changed, 185 insertions(+), 16 deletions(-) create mode 100644 app/javascript/flavours/glitch/actions/tags.js create mode 100644 app/javascript/flavours/glitch/reducers/tags.js diff --git a/app/javascript/flavours/glitch/actions/tags.js b/app/javascript/flavours/glitch/actions/tags.js new file mode 100644 index 000000000..3933da8ba --- /dev/null +++ b/app/javascript/flavours/glitch/actions/tags.js @@ -0,0 +1,92 @@ +import api from 'flavours/glitch/util/api'; + +export const HASHTAG_FETCH_REQUEST = 'HASHTAG_FETCH_REQUEST'; +export const HASHTAG_FETCH_SUCCESS = 'HASHTAG_FETCH_SUCCESS'; +export const HASHTAG_FETCH_FAIL = 'HASHTAG_FETCH_FAIL'; + +export const HASHTAG_FOLLOW_REQUEST = 'HASHTAG_FOLLOW_REQUEST'; +export const HASHTAG_FOLLOW_SUCCESS = 'HASHTAG_FOLLOW_SUCCESS'; +export const HASHTAG_FOLLOW_FAIL = 'HASHTAG_FOLLOW_FAIL'; + +export const HASHTAG_UNFOLLOW_REQUEST = 'HASHTAG_UNFOLLOW_REQUEST'; +export const HASHTAG_UNFOLLOW_SUCCESS = 'HASHTAG_UNFOLLOW_SUCCESS'; +export const HASHTAG_UNFOLLOW_FAIL = 'HASHTAG_UNFOLLOW_FAIL'; + +export const fetchHashtag = name => (dispatch, getState) => { + dispatch(fetchHashtagRequest()); + + api(getState).get(`/api/v1/tags/${name}`).then(({ data }) => { + dispatch(fetchHashtagSuccess(name, data)); + }).catch(err => { + dispatch(fetchHashtagFail(err)); + }); +}; + +export const fetchHashtagRequest = () => ({ + type: HASHTAG_FETCH_REQUEST, +}); + +export const fetchHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FETCH_SUCCESS, + name, + tag, +}); + +export const fetchHashtagFail = error => ({ + type: HASHTAG_FETCH_FAIL, + error, +}); + +export const followHashtag = name => (dispatch, getState) => { + dispatch(followHashtagRequest(name)); + + api(getState).post(`/api/v1/tags/${name}/follow`).then(({ data }) => { + dispatch(followHashtagSuccess(name, data)); + }).catch(err => { + dispatch(followHashtagFail(name, err)); + }); +}; + +export const followHashtagRequest = name => ({ + type: HASHTAG_FOLLOW_REQUEST, + name, +}); + +export const followHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FOLLOW_SUCCESS, + name, + tag, +}); + +export const followHashtagFail = (name, error) => ({ + type: HASHTAG_FOLLOW_FAIL, + name, + error, +}); + +export const unfollowHashtag = name => (dispatch, getState) => { + dispatch(unfollowHashtagRequest(name)); + + api(getState).post(`/api/v1/tags/${name}/unfollow`).then(({ data }) => { + dispatch(unfollowHashtagSuccess(name, data)); + }).catch(err => { + dispatch(unfollowHashtagFail(name, err)); + }); +}; + +export const unfollowHashtagRequest = name => ({ + type: HASHTAG_FETCH_REQUEST, + name, +}); + +export const unfollowHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FETCH_SUCCESS, + name, + tag, +}); + +export const unfollowHashtagFail = (name, error) => ({ + type: HASHTAG_FETCH_FAIL, + name, + error, +}); diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js index 48e52e4cd..87a52b269 100644 --- a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js +++ b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js @@ -4,18 +4,29 @@ import PropTypes from 'prop-types'; import StatusListContainer from 'flavours/glitch/features/ui/containers/status_list_container'; import Column from 'flavours/glitch/components/column'; import ColumnHeader from 'flavours/glitch/components/column_header'; +import ImmutablePropTypes from 'react-immutable-proptypes'; import ColumnSettingsContainer from './containers/column_settings_container'; import { expandHashtagTimeline, clearTimeline } from 'flavours/glitch/actions/timelines'; import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; -import { FormattedMessage } from 'react-intl'; import { connectHashtagStream } from 'flavours/glitch/actions/streaming'; +import { injectIntl, FormattedMessage, defineMessages } from 'react-intl'; import { isEqual } from 'lodash'; +import { fetchHashtag, followHashtag, unfollowHashtag } from 'flavours/glitch/actions/tags'; +import Icon from 'flavours/glitch/components/icon'; +import classNames from 'classnames'; + +const messages = defineMessages({ + followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' }, + unfollowHashtag: { id: 'hashtag.unfollow', defaultMessage: 'Unfollow hashtag' }, +}); const mapStateToProps = (state, props) => ({ hasUnread: state.getIn(['timelines', `hashtag:${props.params.id}${props.params.local ? ':local' : ''}`, 'unread']) > 0, + tag: state.getIn(['tags', props.params.id]), }); export default @connect(mapStateToProps) +@injectIntl class HashtagTimeline extends React.PureComponent { disconnects = []; @@ -25,7 +36,9 @@ class HashtagTimeline extends React.PureComponent { columnId: PropTypes.string, dispatch: PropTypes.func.isRequired, hasUnread: PropTypes.bool, + tag: ImmutablePropTypes.map, multiColumn: PropTypes.bool, + intl: PropTypes.object, }; handlePin = () => { @@ -39,7 +52,8 @@ class HashtagTimeline extends React.PureComponent { } title = () => { - let title = [this.props.params.id]; + const { id } = this.props.params; + const title = [id]; if (this.additionalFor('any')) { title.push(' ', ); @@ -95,23 +109,34 @@ class HashtagTimeline extends React.PureComponent { this.disconnects = []; } - componentDidMount () { + _unload () { + const { dispatch } = this.props; + const { id, local } = this.props.params; + + this._unsubscribe(); + dispatch(clearTimeline(`hashtag:${id}${local ? ':local' : ''}`)); + } + + _load() { const { dispatch } = this.props; const { id, tags, local } = this.props.params; this._subscribe(dispatch, id, tags, local); dispatch(expandHashtagTimeline(id, { tags, local })); + dispatch(fetchHashtag(id)); } - componentWillReceiveProps (nextProps) { - const { dispatch, params } = this.props; - const { id, tags, local } = nextProps.params; + componentDidMount () { + this._load(); + } + + componentDidUpdate (prevProps) { + const { params } = this.props; + const { id, tags, local } = prevProps.params; if (id !== params.id || !isEqual(tags, params.tags) || !isEqual(local, params.local)) { - this._unsubscribe(); - this._subscribe(dispatch, id, tags, local); - dispatch(clearTimeline(`hashtag:${id}${local ? ':local' : ''}`)); - dispatch(expandHashtagTimeline(id, { tags, local })); + this._unload(); + this._load(); } } @@ -124,17 +149,42 @@ class HashtagTimeline extends React.PureComponent { } handleLoadMore = maxId => { - const { id, tags, local } = this.props.params; - this.props.dispatch(expandHashtagTimeline(id, { maxId, tags, local })); + const { dispatch, params } = this.props; + const { id, tags, local } = params; + + dispatch(expandHashtagTimeline(id, { maxId, tags, local })); + } + + handleFollow = () => { + const { dispatch, params, tag } = this.props; + const { id } = params; + + if (tag.get('following')) { + dispatch(unfollowHashtag(id)); + } else { + dispatch(followHashtag(id)); + } } render () { - const { hasUnread, columnId, multiColumn } = this.props; - const { id, local } = this.props.params; + const { hasUnread, columnId, multiColumn, tag, intl } = this.props; + const { id, local } = this.props.params; const pinned = !!columnId; + let followButton; + + if (tag) { + const following = tag.get('following'); + + followButton = ( + + ); + } + return ( - + {columnId && } diff --git a/app/javascript/flavours/glitch/reducers/index.js b/app/javascript/flavours/glitch/reducers/index.js index b8aad9fad..991b4aa79 100644 --- a/app/javascript/flavours/glitch/reducers/index.js +++ b/app/javascript/flavours/glitch/reducers/index.js @@ -41,6 +41,7 @@ import account_notes from './account_notes'; import picture_in_picture from './picture_in_picture'; import accounts_map from './accounts_map'; import history from './history'; +import tags from './tags'; const reducers = { announcements, @@ -85,6 +86,7 @@ const reducers = { account_notes, picture_in_picture, history, + tags, }; export default combineReducers(reducers); diff --git a/app/javascript/flavours/glitch/reducers/tags.js b/app/javascript/flavours/glitch/reducers/tags.js new file mode 100644 index 000000000..d24098e39 --- /dev/null +++ b/app/javascript/flavours/glitch/reducers/tags.js @@ -0,0 +1,25 @@ +import { + HASHTAG_FETCH_SUCCESS, + HASHTAG_FOLLOW_REQUEST, + HASHTAG_FOLLOW_FAIL, + HASHTAG_UNFOLLOW_REQUEST, + HASHTAG_UNFOLLOW_FAIL, +} from 'mastodon/actions/tags'; +import { Map as ImmutableMap, fromJS } from 'immutable'; + +const initialState = ImmutableMap(); + +export default function tags(state = initialState, action) { + switch(action.type) { + case HASHTAG_FETCH_SUCCESS: + return state.set(action.name, fromJS(action.tag)); + case HASHTAG_FOLLOW_REQUEST: + case HASHTAG_UNFOLLOW_FAIL: + return state.setIn([action.name, 'following'], true); + case HASHTAG_FOLLOW_FAIL: + case HASHTAG_UNFOLLOW_REQUEST: + return state.setIn([action.name, 'following'], false); + default: + return state; + } +}; From 47bbd53eca6c91c631725e40f29c91daafaa13ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:14:17 +0900 Subject: [PATCH 016/280] Bump @babel/preset-env from 7.18.9 to 7.18.10 (#18915) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.9 to 7.18.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 162 ++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 124 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 3f777ee75..f41ea3feb 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.18.9", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.9", - "@babel/preset-env": "^7.18.9", + "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.18.9", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index d054daf02..6f07eef04 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,7 +23,7 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.8": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== @@ -58,6 +58,15 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" +"@babel/generator@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a" + integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA== + dependencies: + "@babel/types" "^7.18.10" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/generator@^7.18.9", "@babel/generator@^7.7.2": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" @@ -90,7 +99,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.9": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== @@ -135,6 +144,18 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" + integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-environment-visitor@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" @@ -225,6 +246,16 @@ "@babel/helper-wrap-function" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" @@ -257,6 +288,11 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" @@ -282,6 +318,16 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-wrap-function@^7.18.9": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz#a7fcd3ab9b1be4c9b52cf7d7fdc1e88c2ce93396" + integrity sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ== + dependencies: + "@babel/helper-function-name" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" + "@babel/helpers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" @@ -314,6 +360,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== +"@babel/parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" + integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -330,14 +381,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" - integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== +"@babel/plugin-proposal-async-generator-functions@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" + integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.18.6": @@ -907,12 +958,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-escapes@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" - integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" @@ -922,10 +973,10 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" - integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== +"@babel/preset-env@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" + integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== dependencies: "@babel/compat-data" "^7.18.8" "@babel/helper-compilation-targets" "^7.18.9" @@ -933,7 +984,7 @@ "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-async-generator-functions" "^7.18.10" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -993,13 +1044,13 @@ "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" + "@babel/types" "^7.18.10" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" core-js-compat "^3.22.1" semver "^6.3.0" @@ -1048,6 +1099,15 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/template@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + "@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" @@ -1073,11 +1133,28 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" - integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== +"@babel/traverse@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" + integrity sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g== dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" + integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== + dependencies: + "@babel/helper-string-parser" "^7.18.10" "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" @@ -2554,21 +2631,21 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== +babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" + integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== +babel-plugin-polyfill-corejs3@^0.5.2, babel-plugin-polyfill-corejs3@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" + integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" babel-plugin-polyfill-regenerator@^0.3.1: @@ -2578,6 +2655,13 @@ babel-plugin-polyfill-regenerator@^0.3.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" +babel-plugin-polyfill-regenerator@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" + integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.2" + babel-plugin-preval@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-5.1.0.tgz#6efb89bf6b97af592cd1400c6df49c0e9e6ab027" From 6897f70119fa5bc30da37450cf4f46bfab6eb0eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:14:41 +0900 Subject: [PATCH 017/280] Bump @babel/plugin-proposal-decorators from 7.18.9 to 7.18.10 (#18917) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.18.9 to 7.18.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f41ea3feb..ab7586e39 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.18.9", - "@babel/plugin-proposal-decorators": "^7.18.9", + "@babel/plugin-proposal-decorators": "^7.18.10", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.9", "@babel/preset-env": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index 6f07eef04..da9d335ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -408,10 +408,10 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.9.tgz#d09d41ffc74af8499d2ac706ed0dbd5474711665" - integrity sha512-KD7zDNaD14CRpjQjVbV4EnH9lsKYlcpUrhZH37ei2IY+AlXrfAPy5pTmRUE4X6X1k8EsKXPraykxeaogqQvSGA== +"@babel/plugin-proposal-decorators@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz#788650d01e518a8a722eb8b3055dd9d73ecb7a35" + integrity sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" From d53152baa4c8f2be1d884cebc8776ee1468bbbdb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:21:06 +0900 Subject: [PATCH 018/280] Bump @babel/plugin-transform-runtime from 7.18.9 to 7.18.10 (#18913) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.18.9 to 7.18.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 75 +++++++++++++++++++--------------------------------- 2 files changed, 28 insertions(+), 49 deletions(-) diff --git a/package.json b/package.json index ab7586e39..945774f9a 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.18.9", "@babel/plugin-proposal-decorators": "^7.18.10", "@babel/plugin-transform-react-inline-elements": "^7.18.6", - "@babel/plugin-transform-runtime": "^7.18.9", + "@babel/plugin-transform-runtime": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.18.9", diff --git a/yarn.lock b/yarn.lock index da9d335ae..097f58254 100644 --- a/yarn.lock +++ b/yarn.lock @@ -99,7 +99,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== @@ -130,20 +130,6 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - "@babel/helper-define-polyfill-provider@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" @@ -231,7 +217,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== @@ -910,16 +896,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.9.tgz#d9e4b1b25719307bfafbf43065ed7fb3a83adb8f" - integrity sha512-wS8uJwBt7/b/mzE13ktsJdmS4JP/j7PQSaADtnb4I2wL0zK51MQ0pmF8/Jy0wUIS96fr+fXT6S/ifiPXnvrlSg== +"@babel/plugin-transform-runtime@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz#37d14d1fa810a368fd635d4d1476c0154144a96f" + integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.18.6": @@ -1117,22 +1103,6 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" - integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.9" - "@babel/types" "^7.18.9" - debug "^4.1.0" - globals "^11.1.0" - "@babel/traverse@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" @@ -1149,6 +1119,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" @@ -2631,7 +2617,7 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.2: +babel-plugin-polyfill-corejs2@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== @@ -2640,7 +2626,7 @@ babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.2: "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.2, babel-plugin-polyfill-corejs3@^0.5.3: +babel-plugin-polyfill-corejs3@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== @@ -2648,13 +2634,6 @@ babel-plugin-polyfill-corejs3@^0.5.2, babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - babel-plugin-polyfill-regenerator@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" From c23a0a3ebc6fcbcc930a44711f2fc26c97452123 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:31:15 +0900 Subject: [PATCH 019/280] Bump @babel/core from 7.18.9 to 7.18.10 (#18914) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.9 to 7.18.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 65 +++++++++++----------------------------------------- 2 files changed, 14 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 945774f9a..90f7af384 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.9", + "@babel/core": "^7.18.10", "@babel/plugin-proposal-decorators": "^7.18.10", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index 097f58254..1369a9b32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,21 +28,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" - integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.10", "@babel/core@^7.7.2": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" + integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" + "@babel/generator" "^7.18.10" "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-module-transforms" "^7.18.9" "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.9" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/parser" "^7.18.10" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -58,7 +58,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.10": +"@babel/generator@^7.18.10", "@babel/generator@^7.7.2": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a" integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA== @@ -67,15 +67,6 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" - integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== - dependencies: - "@babel/types" "^7.18.9" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -341,12 +332,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" - integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== - -"@babel/parser@^7.18.10": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== @@ -1085,7 +1071,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.18.10": +"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== @@ -1094,16 +1080,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/template@^7.18.6", "@babel/template@^7.3.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" - integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/traverse@^7.18.10": +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" integrity sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g== @@ -1119,22 +1096,6 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" - integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.9" - "@babel/types" "^7.18.9" - debug "^4.1.0" - globals "^11.1.0" - "@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" From 2aba0a98f887c510333661de6fca430be3b79dab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:31:47 +0900 Subject: [PATCH 020/280] Bump sidekiq-unique-jobs from 7.1.26 to 7.1.27 (#18912) Bumps [sidekiq-unique-jobs](https://github.com/mhenrixon/sidekiq-unique-jobs) from 7.1.26 to 7.1.27. - [Release notes](https://github.com/mhenrixon/sidekiq-unique-jobs/releases) - [Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.1.26...v7.1.27) --- updated-dependencies: - dependency-name: sidekiq-unique-jobs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6130ea07f..250f857cd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -612,7 +612,7 @@ GEM rufus-scheduler (~> 3.2) sidekiq (>= 4) tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.26) + sidekiq-unique-jobs (7.1.27) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) From 79ccc1575fba826b82dc234e74c38d9bd4e938dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:34:00 +0900 Subject: [PATCH 021/280] Bump pkg-config from 1.4.7 to 1.4.9 (#18916) Bumps [pkg-config](https://github.com/ruby-gnome/pkg-config) from 1.4.7 to 1.4.9. - [Release notes](https://github.com/ruby-gnome/pkg-config/releases) - [Changelog](https://github.com/ruby-gnome/pkg-config/blob/master/NEWS) - [Commits](https://github.com/ruby-gnome/pkg-config/compare/1.4.7...1.4.9) --- updated-dependencies: - dependency-name: pkg-config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 250f857cd..66805010e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -450,7 +450,7 @@ GEM pg (1.4.2) pghero (2.8.3) activerecord (>= 5) - pkg-config (1.4.7) + pkg-config (1.4.9) posix-spawn (0.3.15) premailer (1.14.2) addressable From 47066bb26a16e0d3913a5035364afc19b1962fde Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:37:04 +0900 Subject: [PATCH 022/280] Bump oj from 3.13.18 to 3.13.19 (#18911) Bumps [oj](https://github.com/ohler55/oj) from 3.13.18 to 3.13.19. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.18...v3.13.19) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 66805010e..dcec4e72d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.18) + oj (3.13.19) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From e34135270023f0ca1433595160cb385481071356 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:46:33 +0900 Subject: [PATCH 023/280] Bump json-ld from 3.2.0 to 3.2.2 (#18932) Bumps [json-ld](https://github.com/ruby-rdf/json-ld) from 3.2.0 to 3.2.2. - [Release notes](https://github.com/ruby-rdf/json-ld/releases) - [Commits](https://github.com/ruby-rdf/json-ld/compare/3.2.0...3.2.2) --- updated-dependencies: - dependency-name: json-ld dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index dcec4e72d..f3e995453 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -327,7 +327,7 @@ GEM activesupport (>= 4.2) aes_key_wrap bindata - json-ld (3.2.0) + json-ld (3.2.2) htmlentities (~> 4.3) json-canonicalization (~> 0.3) link_header (~> 0.0, >= 0.0.8) @@ -527,7 +527,7 @@ GEM thor (~> 1.0) rainbow (3.1.1) rake (13.0.6) - rdf (3.2.3) + rdf (3.2.8) link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.5.0) rdf (~> 3.2) From 4e830af31c4dee239068b31295c149a4094c4548 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:47:17 +0900 Subject: [PATCH 024/280] Bump xorcist from 1.1.2 to 1.1.3 (#18936) Bumps [xorcist](https://github.com/fny/xorcist) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/fny/xorcist/releases) - [Commits](https://github.com/fny/xorcist/compare/v1.1.2...v1.1.3) --- updated-dependencies: - dependency-name: xorcist dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f3e995453..49aa15650 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -717,7 +717,7 @@ GEM websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) wisper (2.0.1) - xorcist (1.1.2) + xorcist (1.1.3) xpath (3.2.0) nokogiri (~> 1.8) zeitwerk (2.6.0) From 0a2433948bac34af277c21b474e567475bf995df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 16:01:40 +0900 Subject: [PATCH 025/280] Bump sidekiq from 6.5.1 to 6.5.3 (#18934) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.1 to 6.5.3. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.1...v6.5.3) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 49aa15650..486c772d3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -601,10 +601,10 @@ GEM railties (>= 4.0.0) securecompare (1.0.0) semantic_range (3.0.0) - sidekiq (6.5.1) + sidekiq (6.5.3) connection_pool (>= 2.2.2) rack (~> 2.0) - redis (>= 4.2.0) + redis (>= 4.5.0) sidekiq-bulk (0.2.0) sidekiq sidekiq-scheduler (4.0.2) From 041f87471f1058a06a1c454a13e31bbd38a96a33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 16:28:09 +0900 Subject: [PATCH 026/280] Bump webmock from 3.14.0 to 3.17.0 (#18935) Bumps [webmock](https://github.com/bblimke/webmock) from 3.14.0 to 3.17.0. - [Release notes](https://github.com/bblimke/webmock/releases) - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.14.0...v3.17.0) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 1690f92df..d21459fcc 100644 --- a/Gemfile +++ b/Gemfile @@ -119,7 +119,7 @@ group :test do gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' gem 'simplecov', '~> 0.21', require: false - gem 'webmock', '~> 3.14' + gem 'webmock', '~> 3.17' gem 'rspec_junit_formatter', '~> 0.5' end diff --git a/Gemfile.lock b/Gemfile.lock index 486c772d3..03c0f297b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -701,7 +701,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.14.0) + webmock (3.17.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -844,7 +844,7 @@ DEPENDENCIES twitter-text (~> 3.1.0) tzinfo-data (~> 1.2022) webauthn (~> 3.0.0.alpha1) - webmock (~> 3.14) + webmock (~> 3.17) webpacker (~> 5.4) webpush (~> 0.3) xorcist (~> 1.1) From 7ccf7a73f1c47a8c03712c39f7c591e837cf6d08 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Wed, 10 Aug 2022 17:12:58 +0200 Subject: [PATCH 027/280] Fix broken dependencies in helm chart and allow using existing secrets in the chart (#18941) * Add ability to specify an existing Secret (#18139) Closes #18139 * Allow using secrets with external postgres * Upgrade CronJob to batch/v1 * Allow using redis.auth.existingSecret * Helmignore mastodon-*.tgz for easy local development * Upgrade helm dependencies * Upgrade postgresql to 11 * Allow putting SMTP password into a secret * Add optional login to SMTP secret This to allow setting LOGIN either in values.yaml or in the secret. * Switch to bitnami charts full archive This prevents older versions from disappearing, see https://github.com/bitnami/charts/issues/10539 for full context. Co-authored-by: Ted Tramonte --- chart/.helmignore | 1 + chart/Chart.lock | 16 ++-- chart/Chart.yaml | 14 +-- chart/templates/_helpers.tpl | 50 +++++++++++ chart/templates/configmap-env.yaml | 6 +- chart/templates/cronjob-media-remove.yaml | 14 ++- chart/templates/deployment-sidekiq.yaml | 25 ++++-- chart/templates/deployment-streaming.yaml | 10 +-- chart/templates/deployment-web.yaml | 12 +-- chart/templates/job-assets-precompile.yaml | 12 +-- chart/templates/job-chewy-upgrade.yaml | 12 +-- chart/templates/job-create-admin.yaml | 12 +-- chart/templates/job-db-migrate.yaml | 12 +-- chart/templates/secrets.yaml | 12 ++- chart/values.yaml | 100 ++++++++++++--------- 15 files changed, 183 insertions(+), 125 deletions(-) diff --git a/chart/.helmignore b/chart/.helmignore index 0e8a0eb36..886747ed0 100644 --- a/chart/.helmignore +++ b/chart/.helmignore @@ -21,3 +21,4 @@ .idea/ *.tmproj .vscode/ +mastodon-*.tgz diff --git a/chart/Chart.lock b/chart/Chart.lock index d74e7570c..961e4fa80 100644 --- a/chart/Chart.lock +++ b/chart/Chart.lock @@ -1,12 +1,12 @@ dependencies: - name: elasticsearch - repository: https://charts.bitnami.com/bitnami - version: 15.10.3 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + version: 19.0.1 - name: postgresql - repository: https://charts.bitnami.com/bitnami - version: 8.10.14 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + version: 11.1.3 - name: redis - repository: https://charts.bitnami.com/bitnami - version: 10.9.0 -digest: sha256:f5c57108f7768fd16391c1a050991c7809f84a640cca308d7d24d87379d04000 -generated: "2021-08-05T08:01:01.457727804Z" + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + version: 16.13.2 +digest: sha256:17ea58a3264aa22faff18215c4269f47dabae956d0df273c684972f356416193 +generated: "2022-08-08T21:44:18.0195364+02:00" diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 1687132ac..b1138b594 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.2.1 +version: 2.0.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to @@ -24,13 +24,13 @@ appVersion: 3.3.0 dependencies: - name: elasticsearch - version: 15.10.3 - repository: https://charts.bitnami.com/bitnami + version: 19.0.1 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami condition: elasticsearch.enabled - name: postgresql - version: 8.10.14 - repository: https://charts.bitnami.com/bitnami + version: 11.1.3 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami condition: postgresql.enabled - name: redis - version: 10.9.0 - repository: https://charts.bitnami.com/bitnami + version: 16.13.2 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index 5814a3120..71bb002ef 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -77,3 +77,53 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this {{- define "mastodon.postgresql.fullname" -}} {{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}} {{- end -}} + +{{/* +Get the mastodon secret. +*/}} +{{- define "mastodon.secretName" -}} +{{- if .Values.mastodon.secrets.existingSecret }} + {{- printf "%s" (tpl .Values.mastodon.secrets.existingSecret $) -}} +{{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Get the postgresql secret. +*/}} +{{- define "mastodon.postgresql.secretName" -}} +{{- if (and (or .Values.postgresql.enabled .Values.postgresql.postgresqlHostname) .Values.postgresql.auth.existingSecret) }} + {{- printf "%s" (tpl .Values.postgresql.auth.existingSecret $) -}} +{{- else if .Values.postgresql.enabled -}} + {{- printf "%s-postgresql" (tpl .Release.Name $) -}} +{{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Get the redis secret. +*/}} +{{- define "mastodon.redis.secretName" -}} +{{- if .Values.redis.auth.existingSecret }} + {{- printf "%s" (tpl .Values.redis.auth.existingSecret $) -}} +{{- else if .Values.redis.existingSecret }} + {{- printf "%s" (tpl .Values.redis.existingSecret $) -}} +{{- else -}} + {{- printf "%s-redis" (tpl .Release.Name $) -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a mastodon secret object should be created +*/}} +{{- define "mastodon.createSecret" -}} +{{- if (or + (and .Values.mastodon.s3.enabled (not .Values.mastodon.s3.existingSecret)) + (not .Values.mastodon.secrets.existingSecret ) + (and (not .Values.postgresql.enabled) (not .Values.postgresql.auth.existingSecret)) + ) -}} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml index aa242684f..f988477d9 100644 --- a/chart/templates/configmap-env.yaml +++ b/chart/templates/configmap-env.yaml @@ -10,14 +10,14 @@ data: {{- else }} DB_HOST: {{ .Values.postgresql.postgresqlHostname }} {{- end }} - DB_NAME: {{ .Values.postgresql.postgresqlDatabase }} + DB_NAME: {{ .Values.postgresql.auth.database }} DB_POOL: {{ .Values.mastodon.sidekiq.concurrency | quote }} DB_PORT: "5432" - DB_USER: {{ .Values.postgresql.postgresqlUsername }} + DB_USER: {{ .Values.postgresql.auth.username }} DEFAULT_LOCALE: {{ .Values.mastodon.locale }} {{- if .Values.elasticsearch.enabled }} ES_ENABLED: "true" - ES_HOST: {{ template "mastodon.elasticsearch.fullname" . }}-master + ES_HOST: {{ template "mastodon.elasticsearch.fullname" . }}-master-hl ES_PORT: "9200" {{- end }} LOCAL_DOMAIN: {{ .Values.mastodon.local_domain }} diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 3d6e25cc6..726e100cf 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -1,5 +1,5 @@ {{ if .Values.mastodon.cron.removeMedia.enabled }} -apiVersion: batch/v1beta1 +apiVersion: batch/v1 kind: CronJob metadata: name: {{ include "mastodon.fullname" . }}-media-remove @@ -49,21 +49,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index baf6c2b2d..f1809bd85 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -70,22 +70,31 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password + {{- if .Values.mastodon.smtp.existingSecret }} + - name: "SMTP_LOGIN" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.smtp.existingSecret }} + key: login + optional: true + - name: "SMTP_PASSWORD" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.smtp.existingSecret }} + key: password + {{- end -}} {{- if (not .Values.mastodon.s3.enabled) }} volumeMounts: - name: assets diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index b332b686a..12203a530 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -43,16 +43,12 @@ spec: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.streaming.port | quote }} diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index 8b8bb4f29..5e22ca539 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -56,21 +56,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index 825a7e916..4aa8d1407 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -50,21 +50,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index cc68a3385..16b4f75a7 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -51,21 +51,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index ffb8bb059..486c0c357 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -56,21 +56,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 72f910e3b..41ece64a2 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -50,21 +50,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml index 0452a8ae1..135d5b61a 100644 --- a/chart/templates/secrets.yaml +++ b/chart/templates/secrets.yaml @@ -1,3 +1,4 @@ +{{- if (include "mastodon.createSecret" .) }} apiVersion: v1 kind: Secret metadata: @@ -7,9 +8,12 @@ metadata: type: Opaque data: {{- if .Values.mastodon.s3.enabled }} + {{- if not .Values.mastodon.s3.existingSecret }} AWS_ACCESS_KEY_ID: "{{ .Values.mastodon.s3.access_key | b64enc }}" AWS_SECRET_ACCESS_KEY: "{{ .Values.mastodon.s3.access_secret | b64enc }}" {{- end }} + {{- end }} + {{- if not .Values.mastodon.secrets.existingSecret }} {{- if not (empty .Values.mastodon.secrets.secret_key_base) }} SECRET_KEY_BASE: "{{ .Values.mastodon.secrets.secret_key_base | b64enc }}" {{- else }} @@ -30,6 +34,10 @@ data: {{- else }} VAPID_PUBLIC_KEY: {{ required "vapid.public_key is required" .Values.mastodon.secrets.vapid.public_key }} {{- end }} - {{- if not .Values.postgresql.enabled }} - postgresql-password: "{{ .Values.postgresql.postgresqlPassword | b64enc }}" {{- end }} + {{- if not .Values.postgresql.enabled }} + {{- if not .Values.postgresql.auth.existingSecret }} + postgresql-password: "{{ .Values.postgresql.auth.password | b64enc }}" + {{- end }} + {{- end }} +{{- end -}} diff --git a/chart/values.yaml b/chart/values.yaml index 2cfa3484b..bd723567f 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -48,6 +48,9 @@ mastodon: enabled: false access_key: "" access_secret: "" + # you can also specify the name of an existing Secret + # with keys AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + existingSecret: "" bucket: "" endpoint: https://us-east-1.linodeobjects.com hostname: us-east-1.linodeobjects.com @@ -61,6 +64,10 @@ mastodon: vapid: private_key: "" public_key: "" + # you can also specify the name of an existing Secret + # with keys SECRET_KEY_BASE and OTP_SECRET and + # VAPID_PRIVATE_KEY and VAPID_PUBLIC_KEY + existingSecret: "" sidekiq: concurrency: 25 smtp: @@ -70,13 +77,16 @@ mastodon: domain: enable_starttls_auto: true from_address: notifications@example.com - login: openssl_verify_mode: peer - password: port: 587 reply_to: server: smtp.mailgun.org tls: false + login: + password: + # you can also specify the name of an existing Secret + # with the keys login and password + existingSecret: streaming: port: 4000 # this should be set manually since os.cpus() returns the number of CPUs on @@ -127,18 +137,26 @@ postgresql: # must match those of that external postgres instance enabled: true # postgresqlHostname: preexisting-postgresql - postgresqlDatabase: mastodon_production - # you must set a password; the password generated by the postgresql chart will - # be rotated on each upgrade: - # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade - postgresqlPassword: "" - postgresqlUsername: postgres + auth: + database: mastodon_production + username: postgres + # you must set a password; the password generated by the postgresql chart will + # be rotated on each upgrade: + # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade + password: "" + # you can also specify the name of an existing Secret + # with a key of postgres-password set to the password you want + existingSecret: "" # https://github.com/bitnami/charts/tree/master/bitnami/redis#parameters redis: # you must set a password; the password generated by the redis chart will be # rotated on each upgrade: password: "" + # you can also specify the name of an existing Secret + # with a key of redis-password set to the password you want + # auth: + # existingSecret: "" service: type: ClusterIP @@ -157,45 +175,45 @@ externalAuth: # client_secret: SECRETKEY # redirect_uri: https://example.com/auth/auth/openid_connect/callback # assume_email_is_verified: true - # client_auth_method: - # response_type: - # response_mode: - # display: - # prompt: - # send_nonce: - # send_scope_to_token_endpoint: - # idp_logout_redirect_uri: - # http_scheme: - # host: - # port: - # jwks_uri: - # auth_endpoint: - # token_endpoint: - # user_info_endpoint: - # end_session_endpoint: + # client_auth_method: + # response_type: + # response_mode: + # display: + # prompt: + # send_nonce: + # send_scope_to_token_endpoint: + # idp_logout_redirect_uri: + # http_scheme: + # host: + # port: + # jwks_uri: + # auth_endpoint: + # token_endpoint: + # user_info_endpoint: + # end_session_endpoint: saml: enabled: false # acs_url: http://mastodon.example.com/auth/auth/saml/callback # issuer: mastodon # idp_sso_target_url: https://login.example.com/auth/realms/example/protocol/saml # idp_cert: '-----BEGIN CERTIFICATE-----[your_cert_content]-----END CERTIFICATE-----' - # idp_cert_fingerprint: + # idp_cert_fingerprint: # name_identifier_format: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - # cert: - # private_key: + # cert: + # private_key: # want_assertion_signed: true # want_assertion_encrypted: true # assume_email_is_verified: true # uid_attribute: "urn:oid:0.9.2342.19200300.100.1.1" - # attributes_statements: + # attributes_statements: # uid: "urn:oid:0.9.2342.19200300.100.1.1" # email: "urn:oid:1.3.6.1.4.1.5923.1.1.1.6" # full_name: "urn:oid:2.16.840.1.113730.3.1.241" # first_name: "urn:oid:2.5.4.42" # last_name: "urn:oid:2.5.4.4" - # verified: - # verified_email: - oauth_global: + # verified: + # verified_email: + oauth_global: # Force redirect local login to CAS. Does not function with SAML or LDAP. oauth_redirect_at_sign_in: false cas: @@ -204,15 +222,15 @@ externalAuth: # host: sso.myserver.com # port: 443 # ssl: true - # validate_url: - # callback_url: - # logout_url: - # login_url: + # validate_url: + # callback_url: + # logout_url: + # login_url: # uid_field: 'user' - # ca_path: + # ca_path: # disable_ssl_verification: false # assume_email_is_verified: true - # keys: + # keys: # uid: 'user' # name: 'name' # email: 'email' @@ -222,7 +240,7 @@ externalAuth: # location: 'location' # image: 'image' # phone: 'phone' - pam: + pam: enabled: false # email_domain: example.com # default_service: rpam @@ -232,9 +250,9 @@ externalAuth: # host: myservice.namespace.svc # port: 389 # method: simple_tls - # base: - # bind_on: - # password: + # base: + # bind_on: + # password: # uid: cn # mail: mail # search_filter: "(|(%{uid}=%{email})(%{mail}=%{email}))" From 03f19b8cd38ee0096f9a4ce47247379ed6f94cd7 Mon Sep 17 00:00:00 2001 From: Tony Jiang Date: Sat, 13 Aug 2022 06:28:16 -0700 Subject: [PATCH 028/280] Remove nanobox (#17881) Co-authored-by: Tony Jiang --- .env.nanobox | 254 ---------------------------------- boxfile.yml | 205 --------------------------- nanobox/nginx-local.conf | 92 ------------ nanobox/nginx-stream.conf.erb | 66 --------- nanobox/nginx-web.conf.erb | 90 ------------ 5 files changed, 707 deletions(-) delete mode 100644 .env.nanobox delete mode 100644 boxfile.yml delete mode 100644 nanobox/nginx-local.conf delete mode 100644 nanobox/nginx-stream.conf.erb delete mode 100644 nanobox/nginx-web.conf.erb diff --git a/.env.nanobox b/.env.nanobox deleted file mode 100644 index 51dfdbd58..000000000 --- a/.env.nanobox +++ /dev/null @@ -1,254 +0,0 @@ -# Service dependencies -# You may set REDIS_URL instead for more advanced options -REDIS_HOST=$DATA_REDIS_HOST -REDIS_PORT=6379 -# REDIS_DB=0 - -# You may set DATABASE_URL instead for more advanced options -DB_HOST=$DATA_DB_HOST -DB_USER=$DATA_DB_USER -DB_NAME=gonano -DB_PASS=$DATA_DB_PASS -DB_PORT=5432 - -# DATABASE_URL=postgresql://$DATA_DB_USER:$DATA_DB_PASS@$DATA_DB_HOST/gonano - -# Optional Elasticsearch configuration -ES_ENABLED=true -ES_HOST=$DATA_ELASTIC_HOST -ES_PORT=9200 - -BIND=0.0.0.0 - -# Federation -# Note: Changing LOCAL_DOMAIN at a later time will cause unwanted side effects, including breaking all existing federation. -# LOCAL_DOMAIN should *NOT* contain the protocol part of the domain e.g https://example.com. -LOCAL_DOMAIN=${APP_NAME}.nanoapp.io - -# Changing LOCAL_HTTPS in production is no longer supported. (Mastodon will always serve https:// links) - -# Use this only if you need to run mastodon on a different domain than the one used for federation. -# You can read more about this option on https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Serving_a_different_domain.md -# DO *NOT* USE THIS UNLESS YOU KNOW *EXACTLY* WHAT YOU ARE DOING. -# WEB_DOMAIN=mastodon.example.com - -# Use this if you want to have several aliases handler@example1.com -# handler@example2.com etc. for the same user. LOCAL_DOMAIN should not -# be added. Comma separated values -# ALTERNATE_DOMAINS=example1.com,example2.com - -# Application secrets -# Generate each with the `rake secret` task (`nanobox run bundle exec rake secret`) -SECRET_KEY_BASE=$SECRET_KEY_BASE -OTP_SECRET=$OTP_SECRET - -# VAPID keys (used for push notifications) -# You can generate the keys using the following command (first is the private key, second is the public one) -# You should only generate this once per instance. If you later decide to change it, all push subscription will -# be invalidated, requiring the users to access the website again to resubscribe. -# -# Generate with `rake mastodon:webpush:generate_vapid_key` task (`nanobox run bundle exec rake mastodon:webpush:generate_vapid_key`) -# -# For more information visit https://rossta.net/blog/using-the-web-push-api-with-vapid.html -VAPID_PRIVATE_KEY=$VAPID_PRIVATE_KEY -VAPID_PUBLIC_KEY=$VAPID_PUBLIC_KEY - -# Registrations -# Single user mode will disable registrations and redirect frontpage to the first profile -# SINGLE_USER_MODE=true -# Prevent registrations with following e-mail domains -# EMAIL_DOMAIN_BLACKLIST=example1.com|example2.de|etc -# Only allow registrations with the following e-mail domains -# EMAIL_DOMAIN_WHITELIST=example1.com|example2.de|etc - -# Optionally change default language -# DEFAULT_LOCALE=de - -# E-mail configuration -# Note: Mailgun and SparkPost (https://sparkpo.st/smtp) each have good free tiers -# If you want to use an SMTP server without authentication (e.g local Postfix relay) -# then set SMTP_AUTH_METHOD and SMTP_OPENSSL_VERIFY_MODE to 'none' and -# *comment* SMTP_LOGIN and SMTP_PASSWORD (leaving them blank is not enough). -SMTP_SERVER=$SMTP_SERVER -SMTP_PORT=587 -SMTP_LOGIN=$SMTP_LOGIN -SMTP_PASSWORD=$SMTP_PASSWORD -SMTP_FROM_ADDRESS=notifications@${APP_NAME}.nanoapp.io -#SMTP_REPLY_TO= -#SMTP_DOMAIN= # defaults to LOCAL_DOMAIN -#SMTP_DELIVERY_METHOD=smtp # delivery method can also be sendmail -#SMTP_AUTH_METHOD=plain -#SMTP_CA_FILE=/etc/ssl/certs/ca-certificates.crt -#SMTP_OPENSSL_VERIFY_MODE=peer -#SMTP_ENABLE_STARTTLS_AUTO=true -#SMTP_TLS=true - -# Optional user upload path and URL (images, avatars). Default is :rails_root/public/system. If you set this variable, you are responsible for making your HTTP server (eg. nginx) serve these files. -# PAPERCLIP_ROOT_PATH=/var/lib/mastodon/public-system -# PAPERCLIP_ROOT_URL=/system - -# Optional asset host for multi-server setups -# The asset host must allow cross origin request from WEB_DOMAIN or LOCAL_DOMAIN -# if WEB_DOMAIN is not set. For example, the server may have the -# following header field: -# Access-Control-Allow-Origin: https://example.com/ -# CDN_HOST=https://assets.example.com - -# S3 (optional) -# The attachment host must allow cross origin request from WEB_DOMAIN or -# LOCAL_DOMAIN if WEB_DOMAIN is not set. For example, the server may have the -# following header field: -# Access-Control-Allow-Origin: https://192.168.1.123:9000/ -# S3_ENABLED=true -# S3_BUCKET= -# AWS_ACCESS_KEY_ID= -# AWS_SECRET_ACCESS_KEY= -# S3_REGION= -# S3_PROTOCOL=http -# S3_HOSTNAME=192.168.1.123:9000 - -# S3 (Minio Config (optional) Please check Minio instance for details) -# The attachment host must allow cross origin request - see the description -# above. -# S3_ENABLED=true -# S3_BUCKET= -# AWS_ACCESS_KEY_ID= -# AWS_SECRET_ACCESS_KEY= -# S3_REGION= -# S3_PROTOCOL=https -# S3_HOSTNAME= -# S3_ENDPOINT= -# S3_SIGNATURE_VERSION= - -# Google Cloud Storage (optional) -# Use S3 compatible API. Since GCS does not support Multipart Upload, -# increase the value of S3_MULTIPART_THRESHOLD to disable Multipart Upload. -# The attachment host must allow cross origin request - see the description -# above. -# S3_ENABLED=true -# AWS_ACCESS_KEY_ID= -# AWS_SECRET_ACCESS_KEY= -# S3_REGION= -# S3_PROTOCOL=https -# S3_HOSTNAME=storage.googleapis.com -# S3_ENDPOINT=https://storage.googleapis.com -# S3_MULTIPART_THRESHOLD=52428801 # 50.megabytes - -# Swift (optional) -# The attachment host must allow cross origin request - see the description -# above. -# SWIFT_ENABLED=true -# SWIFT_USERNAME= -# For Keystone V3, the value for SWIFT_TENANT should be the project name -# SWIFT_TENANT= -# SWIFT_PASSWORD= -# Some OpenStack V3 providers require PROJECT_ID (optional) -# SWIFT_PROJECT_ID= -# Keystone V2 and V3 URLs are supported. Use a V3 URL if possible to avoid -# issues with token rate-limiting during high load. -# SWIFT_AUTH_URL= -# SWIFT_CONTAINER= -# SWIFT_OBJECT_URL= -# SWIFT_REGION= -# Defaults to 'default' -# SWIFT_DOMAIN_NAME= -# Defaults to 60 seconds. Set to 0 to disable -# SWIFT_CACHE_TTL= - -# Optional alias for S3 (e.g. to serve files on a custom domain, possibly using Cloudfront or Cloudflare) -# S3_ALIAS_HOST= - -# Streaming API integration -# STREAMING_API_BASE_URL= - -# Advanced settings -# If you need to use pgBouncer, you need to disable prepared statements: -# PREPARED_STATEMENTS=false - -# Cluster number setting for streaming API server. -# If you comment out following line, cluster number will be `numOfCpuCores - 1`. -# STREAMING_CLUSTER_NUM=1 - -# Docker mastodon user -# If you use Docker, you may want to assign UID/GID manually. -# UID=1000 -# GID=1000 - -# LDAP authentication (optional) -# LDAP_ENABLED=true -# LDAP_HOST=localhost -# LDAP_PORT=389 -# LDAP_METHOD=simple_tls -# LDAP_BASE= -# LDAP_BIND_DN= -# LDAP_PASSWORD= -# LDAP_UID=cn -# LDAP_MAIL=mail -# LDAP_SEARCH_FILTER=(|(%{uid}=%{email})(%{mail}=%{email})) -# LDAP_UID_CONVERSION_ENABLED=true -# LDAP_UID_CONVERSION_SEARCH=., - -# LDAP_UID_CONVERSION_REPLACE=_ - -# PAM authentication (optional) -# PAM authentication uses for the email generation the "email" pam variable -# and optional as fallback PAM_DEFAULT_SUFFIX -# The pam environment variable "email" is provided by: -# https://github.com/devkral/pam_email_extractor -# PAM_ENABLED=true -# Fallback email domain for email address generation (LOCAL_DOMAIN by default) -# PAM_EMAIL_DOMAIN=example.com -# Name of the pam service (pam "auth" section is evaluated) -# PAM_DEFAULT_SERVICE=rpam -# Name of the pam service used for checking if an user can register (pam "account" section is evaluated) (nil (disabled) by default) -# PAM_CONTROLLED_SERVICE=rpam - -# Optional CAS authentication (cf. omniauth-cas) : -# CAS_ENABLED=true -# CAS_URL=https://sso.myserver.com/ -# CAS_HOST=sso.myserver.com/ -# CAS_PORT=443 -# CAS_SSL=true -# CAS_VALIDATE_URL= -# CAS_CALLBACK_URL= -# CAS_LOGOUT_URL= -# CAS_LOGIN_URL= -# CAS_UID_FIELD='user' -# CAS_CA_PATH= -# CAS_DISABLE_SSL_VERIFICATION=false -# CAS_UID_KEY='user' -# CAS_NAME_KEY='name' -# CAS_EMAIL_KEY='email' -# CAS_NICKNAME_KEY='nickname' -# CAS_FIRST_NAME_KEY='firstname' -# CAS_LAST_NAME_KEY='lastname' -# CAS_LOCATION_KEY='location' -# CAS_IMAGE_KEY='image' -# CAS_PHONE_KEY='phone' -# CAS_SECURITY_ASSUME_EMAIL_IS_VERIFIED=true - -# Optional SAML authentication (cf. omniauth-saml) -# SAML_ENABLED=true -# SAML_ACS_URL=http://localhost:3000/auth/auth/saml/callback -# SAML_ISSUER=https://example.com -# SAML_IDP_SSO_TARGET_URL=https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO -# SAML_IDP_CERT= -# SAML_IDP_CERT_FINGERPRINT= -# SAML_NAME_IDENTIFIER_FORMAT= -# SAML_CERT= -# SAML_PRIVATE_KEY= -# SAML_SECURITY_WANT_ASSERTION_SIGNED=true -# SAML_SECURITY_WANT_ASSERTION_ENCRYPTED=true -# SAML_SECURITY_ASSUME_EMAIL_IS_VERIFIED=true -# SAML_ATTRIBUTES_STATEMENTS_UID="urn:oid:0.9.2342.19200300.100.1.1" -# SAML_ATTRIBUTES_STATEMENTS_EMAIL="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" -# SAML_ATTRIBUTES_STATEMENTS_FULL_NAME="urn:oid:2.16.840.1.113730.3.1.241" -# SAML_ATTRIBUTES_STATEMENTS_FIRST_NAME="urn:oid:2.5.4.42" -# SAML_ATTRIBUTES_STATEMENTS_LAST_NAME="urn:oid:2.5.4.4" -# SAML_UID_ATTRIBUTE="urn:oid:0.9.2342.19200300.100.1.1" -# SAML_ATTRIBUTES_STATEMENTS_VERIFIED= -# SAML_ATTRIBUTES_STATEMENTS_VERIFIED_EMAIL= - -# Use HTTP proxy for outgoing request (optional) -# http_proxy=http://gateway.local:8118 -# Access control for hidden service. -# ALLOW_ACCESS_TO_HIDDEN_SERVICE=true diff --git a/boxfile.yml b/boxfile.yml deleted file mode 100644 index 27166cec9..000000000 --- a/boxfile.yml +++ /dev/null @@ -1,205 +0,0 @@ -run.config: - engine: ruby - engine.config: - runtime: ruby-2.5 - - extra_packages: - # basic servers: - - nginx - - nodejs - - # for images: - - ImageMagick - - jemalloc - - # for videos: - - ffmpeg3 - - # to prep the .env file: - - gettext-tools - - # for node-gyp, used in the asset compilation process: - - python-2 - - # i18n: - - libidn - - cache_dirs: - - node_modules - - extra_path_dirs: - - node_modules/.bin - - build_triggers: - - .ruby-version - - Gemfile - - Gemfile.lock - - package.json - - yarn.lock - - extra_steps: - - cp .env.nanobox .env - - yarn - - fs_watch: true - -deploy.config: - extra_steps: - - NODE_ENV=production bundle exec rake assets:precompile - transform: - - 'envsubst < /app/.env.nanobox > /app/.env.production' - - |- - if [ -z "$LOCAL_DOMAIN" ] - then - . /app/.env.production - export LOCAL_DOMAIN - fi - erb /app/nanobox/nginx-web.conf.erb > /app/nanobox/nginx-web.conf - erb /app/nanobox/nginx-stream.conf.erb > /app/nanobox/nginx-stream.conf - - touch /app/log/production.log - before_live: - web.web: - - bin/tootctl cache clear - - bundle exec rake db:migrate:setup - after_live: - worker.sidekiq: - - |- - if [[ "${ES_ENABLED}" != "false" ]] - then - bin/tootctl search deploy - fi - -web.web: - start: - nginx: nginx -c /app/nanobox/nginx-web.conf - rails: bundle exec puma -C /app/config/puma.rb - - routes: - - '/' - - writable_dirs: - - tmp - - log_watch: - rails: 'log/production.log' - - network_dirs: - data.storage: - - public/system - -web.stream: - start: - nginx: nginx -c /app/nanobox/nginx-stream.conf - node: yarn run start - - routes: - - '/api/v1/streaming*' - # Somehow we're getting requests for scheme://domain//api/v1/streaming* - match those, too - - '//api/v1/streaming*' - - writable_dirs: - - tmp - -worker.sidekiq: - start: - default: bundle exec sidekiq -c 5 -q default -L /app/log/sidekiq.log - mailers: bundle exec sidekiq -c 5 -q mailers -L /app/log/sidekiq.log - pull: bundle exec sidekiq -c 5 -q pull -L /app/log/sidekiq.log - push: bundle exec sidekiq -c 5 -q push -L /app/log/sidekiq.log - scheduler: bundle exec sidekiq -c 5 -q scheduler -L /app/log/sidekiq.log - - writable_dirs: - - tmp - - log_watch: - rails: 'log/production.log' - sidekiq: 'log/sidekiq.log' - - network_dirs: - data.storage: - - public/system - -data.db: - image: nanobox/postgresql:9.6 - - cron: - - id: backup - schedule: '0 3 * * *' - command: | - PGPASSWORD=${DATA_DB_PASS} pg_dump -U ${DATA_DB_USER} -w -Fc -O gonano | - gzip | - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).sql.gz -X POST -T - >&2 - curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | - sed 's/,/\n/g' | - grep ${HOSTNAME} | - sort | - head -n-${BACKUP_COUNT:-1} | - sed 's/.*: \?"\(.*\)".*/\1/' | - while read file - do - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE - done - -data.elastic: - image: nanobox/elasticsearch:5 - - cron: - - id: backup - schedule: '0 3 * * *' - command: | - id=$(cat /proc/sys/kernel/random/uuid) - curl -X PUT -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}" -d "{\"type\": \"fs\",\"settings\": {\"location\": \"/var/tmp/${id}\",\"compress\": true}}" - curl -X PUT -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}/backup?wait_for_completion=true&pretty" - tar -cz -C "/var/tmp/${id}" . | - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).tgz -X POST -T - >&2 - curl -X DELETE -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}" - rm -rf "/var/tmp/${id}" - curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | - sed 's/,/\n/g' | - grep ${HOSTNAME} | - sort | - head -n-${BACKUP_COUNT:-1} | - sed 's/.*: \?"\(.*\)".*/\1/' | - while read file - do - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE - done - -data.redis: - image: nanobox/redis:4.0 - - cron: - - id: backup - schedule: '0 3 * * *' - command: | - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).rdb -X POST -T /data/var/db/redis/dump.rdb >&2 - curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | - sed 's/,/\n/g' | - grep ${HOSTNAME} | - sort | - head -n-${BACKUP_COUNT:-1} | - sed 's/.*: \?"\(.*\)".*/\1/' | - while read file - do - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE - done - -data.storage: - image: nanobox/unfs:0.9 - - cron: - - id: backup - schedule: '0 3 * * *' - command: | - tar cz -C /data/var/db/unfs/ . | - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).tgz -X POST -T - >&2 - curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | - sed 's/,/\n/g' | - grep ${HOSTNAME} | - sort | - head -n-${BACKUP_COUNT:-1} | - sed 's/.*: \?"\(.*\)".*/\1/' | - while read file - do - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE - done diff --git a/nanobox/nginx-local.conf b/nanobox/nginx-local.conf deleted file mode 100644 index 37c8a451a..000000000 --- a/nanobox/nginx-local.conf +++ /dev/null @@ -1,92 +0,0 @@ -worker_processes 1; -daemon off; - -events { - worker_connections 1024; -} - -http { - include /data/etc/nginx/mime.types; - sendfile on; - - gzip on; - gzip_disable "MSIE [1-6]\."; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_buffers 16 8k; - gzip_min_length 500; - gzip_http_version 1.1; - gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml; - - # Proxy upstream to the puma process - upstream rails { - server 127.0.0.1:3000; - } - - # Proxy upstream to the node process - upstream node { - server 127.0.0.1:4000; - } - - map $http_upgrade $connection_upgrade { - default upgrade; - '' close; - } - - # Configuration for Nginx - server { - # Listen on port 8080 - listen 8080; - - keepalive_timeout 70; - client_max_body_size 80M; - - root /app/public; - - add_header Strict-Transport-Security "max-age=31536000"; - - location / { - try_files $uri @rails; - } - - # Proxy connections to rails - location @rails { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header Proxy ""; - proxy_pass_header Server; - - proxy_pass http://rails; - proxy_buffering off; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - tcp_nodelay on; - } - - # Proxy connections to node - location /api/v1/streaming { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header Proxy ""; - - proxy_pass http://node; - proxy_buffering off; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - tcp_nodelay on; - } - } - - error_page 500 501 502 503 504 /500.html; -} diff --git a/nanobox/nginx-stream.conf.erb b/nanobox/nginx-stream.conf.erb deleted file mode 100644 index 4ea6e30fc..000000000 --- a/nanobox/nginx-stream.conf.erb +++ /dev/null @@ -1,66 +0,0 @@ -worker_processes 1; -daemon off; - -events { - worker_connections 1024; -} - -http { - include /data/etc/nginx/mime.types; - sendfile on; - - gzip on; - gzip_disable "MSIE [1-6]\."; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_buffers 16 8k; - gzip_min_length 500; - gzip_http_version 1.1; - gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml; - - # Proxy upstream to the node process - upstream node { - server 127.0.0.1:4000; - } - - map $http_upgrade $connection_upgrade { - default upgrade; - '' close; - } - - # Configuration for Nginx - server { - # Listen on port 8080 - listen 8080; - - keepalive_timeout 70; - client_max_body_size 80M; - - root /app/public; - - add_header Strict-Transport-Security "max-age=31536000"; - - location / { - try_files $uri @node; - } - - # Proxy connections to node - location @node { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header Proxy ""; - - proxy_pass http://node; - proxy_buffering off; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - tcp_nodelay on; - } - } -} diff --git a/nanobox/nginx-web.conf.erb b/nanobox/nginx-web.conf.erb deleted file mode 100644 index 182d99209..000000000 --- a/nanobox/nginx-web.conf.erb +++ /dev/null @@ -1,90 +0,0 @@ -worker_processes 1; -daemon off; - -events { - worker_connections 1024; -} - -http { - include /data/etc/nginx/mime.types; - sendfile on; - - gzip on; - gzip_disable "MSIE [1-6]\."; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_buffers 16 8k; - gzip_min_length 500; - gzip_http_version 1.1; - gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml; - - # Proxy upstream to the puma process - upstream rails { - server 127.0.0.1:3000; - } - - map $http_upgrade $connection_upgrade { - default upgrade; - '' close; - } - - # Configuration for Nginx - server { - # Listen on port 8080 - listen 8080; - - keepalive_timeout 70; - client_max_body_size 80M; - - root /app/public; - - add_header Strict-Transport-Security "max-age=31536000"; - - location / { - try_files $uri @rails; - } - - location /sw.js { - add_header Cache-Control "public, max-age=0"; - add_header Strict-Transport-Security "max-age=31536000"; - try_files $uri @rails; - } - - location ~ ^/(emoji|packs|system/media_attachments/files|system/accounts/avatars) { - add_header Cache-Control "public, max-age=31536000, immutable"; - add_header Strict-Transport-Security "max-age=31536000"; - try_files $uri @rails; - } - - # Proxy connections to rails - location @rails { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header Proxy ""; - proxy_pass_header Server; - - proxy_pass http://rails; - proxy_buffering on; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - proxy_cache CACHE; - proxy_cache_valid 200 7d; - proxy_cache_valid 410 24h; - proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; - add_header Strict-Transport-Security "max-age=31536000"; - add_header X-Cached $upstream_cache_status; - - tcp_nodelay on; - } - } - - proxy_cache_path /data/var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g; - - error_page 500 501 502 503 504 /500.html; -} From e6979aa6d43f24ab290c27f596fcd71fcc0ac03a Mon Sep 17 00:00:00 2001 From: Rens Groothuijsen Date: Sat, 13 Aug 2022 15:39:05 +0200 Subject: [PATCH 029/280] Add warning for sensitive audio posts (#17885) --- app/javascript/mastodon/components/status.js | 4 ++ .../mastodon/features/audio/index.js | 64 ++++++++++++++++--- .../status/components/detailed_status.js | 4 ++ .../styles/mastodon/components.scss | 7 ++ 4 files changed, 71 insertions(+), 8 deletions(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 238a0d734..dee935a6c 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -409,6 +409,10 @@ class Status extends ImmutablePureComponent { height={110} cacheWidth={this.props.cacheMediaWidth} deployPictureInPicture={pictureInPicture.get('available') ? this.handleDeployPictureInPicture : undefined} + sensitive={status.get('sensitive')} + blurhash={attachment.get('blurhash')} + visible={this.state.showMedia} + onToggleVisibility={this.handleToggleMediaVisibility} /> )} diff --git a/app/javascript/mastodon/features/audio/index.js b/app/javascript/mastodon/features/audio/index.js index c47f55dd1..00854d0e4 100644 --- a/app/javascript/mastodon/features/audio/index.js +++ b/app/javascript/mastodon/features/audio/index.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import { formatTime } from 'mastodon/features/video'; import Icon from 'mastodon/components/icon'; import classNames from 'classnames'; @@ -8,6 +8,9 @@ import { throttle } from 'lodash'; import { getPointerPosition, fileNameFromURL } from 'mastodon/features/video'; import { debounce } from 'lodash'; import Visualizer from './visualizer'; +import { displayMedia, useBlurhash } from '../../initial_state'; +import Blurhash from '../../components/blurhash'; +import { is } from 'immutable'; const messages = defineMessages({ play: { id: 'video.play', defaultMessage: 'Play' }, @@ -15,6 +18,7 @@ const messages = defineMessages({ mute: { id: 'video.mute', defaultMessage: 'Mute sound' }, unmute: { id: 'video.unmute', defaultMessage: 'Unmute sound' }, download: { id: 'video.download', defaultMessage: 'Download file' }, + hide: { id: 'audio.hide', defaultMessage: 'Hide audio' }, }); const TICK_SIZE = 10; @@ -30,10 +34,14 @@ class Audio extends React.PureComponent { duration: PropTypes.number, width: PropTypes.number, height: PropTypes.number, + sensitive: PropTypes.bool, editable: PropTypes.bool, fullscreen: PropTypes.bool, intl: PropTypes.object.isRequired, + blurhash: PropTypes.string, cacheWidth: PropTypes.func, + visible: PropTypes.bool, + onToggleVisibility: PropTypes.func, backgroundColor: PropTypes.string, foregroundColor: PropTypes.string, accentColor: PropTypes.string, @@ -53,6 +61,7 @@ class Audio extends React.PureComponent { muted: false, volume: 0.5, dragging: false, + revealed: this.props.visible !== undefined ? this.props.visible : (displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all'), }; constructor (props) { @@ -78,6 +87,8 @@ class Audio extends React.PureComponent { backgroundColor: this.props.backgroundColor, foregroundColor: this.props.foregroundColor, accentColor: this.props.accentColor, + sensitive: this.props.sensitive, + visible: this.props.visible, }; } @@ -126,6 +137,12 @@ class Audio extends React.PureComponent { } } + componentWillReceiveProps (nextProps) { + if (!is(nextProps.visible, this.props.visible) && nextProps.visible !== undefined) { + this.setState({ revealed: nextProps.visible }); + } + } + componentWillUnmount () { window.removeEventListener('scroll', this.handleScroll); window.removeEventListener('resize', this.handleResize); @@ -189,6 +206,14 @@ class Audio extends React.PureComponent { }); } + toggleReveal = () => { + if (this.props.onToggleVisibility) { + this.props.onToggleVisibility(); + } else { + this.setState({ revealed: !this.state.revealed }); + } + } + handleVolumeMouseDown = e => { document.addEventListener('mousemove', this.handleMouseVolSlide, true); document.addEventListener('mouseup', this.handleVolumeMouseUp, true); @@ -433,13 +458,29 @@ class Audio extends React.PureComponent { } render () { - const { src, intl, alt, editable, autoPlay } = this.props; - const { paused, muted, volume, currentTime, duration, buffer, dragging } = this.state; + const { src, intl, alt, editable, autoPlay, sensitive, blurhash } = this.props; + const { paused, muted, volume, currentTime, duration, buffer, dragging, revealed } = this.state; const progress = Math.min((currentTime / duration) * 100, 100); + let warning; + if (sensitive) { + warning = ; + } else { + warning = ; + } + return ( -
-
+ + {(revealed || editable) && + />}
@@ -508,6 +555,7 @@ class Audio extends React.PureComponent {
+ {!editable && } diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 13bce1b83..5c43c2038 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -138,7 +138,11 @@ class DetailedStatus extends ImmutablePureComponent { backgroundColor={attachment.getIn(['meta', 'colors', 'background'])} foregroundColor={attachment.getIn(['meta', 'colors', 'foreground'])} accentColor={attachment.getIn(['meta', 'colors', 'accent'])} + sensitive={status.get('sensitive')} + visible={this.props.showMedia} + blurhash={attachment.get('blurhash')} height={150} + onToggleVisibility={this.props.onToggleMediaVisibility} /> ); } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 3e202841b..a0a39812b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -5939,6 +5939,13 @@ a.status-card.compact:hover { height: 100%; } + &.inactive { + audio, + .video-player__controls { + visibility: hidden; + } + } + .video-player__volume::before, .video-player__seek::before { background: currentColor; From 8d3318910461c30ffbfc48a15f8b907f45ce98a3 Mon Sep 17 00:00:00 2001 From: gol-cha Date: Sat, 13 Aug 2022 22:40:00 +0900 Subject: [PATCH 030/280] Remove Rack::Deflater (#17937) Co-authored-by: Eugen Rochko --- config/application.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/config/application.rb b/config/application.rb index 06360832c..2e54eb6f6 100644 --- a/config/application.rb +++ b/config/application.rb @@ -165,7 +165,6 @@ module Mastodon config.active_job.queue_adapter = :sidekiq config.middleware.use Rack::Attack - config.middleware.use Rack::Deflater config.middleware.use Mastodon::RackMiddleware config.to_prepare do From fc46fa8f99124b132a82f4f7ef06850c45df445b Mon Sep 17 00:00:00 2001 From: Brayd Date: Sat, 13 Aug 2022 15:41:12 +0200 Subject: [PATCH 031/280] Minimal adjustments to the short description (#18001) Minimal adjustments have been made to the short description so that it logically follows the long description --- lib/mastodon/accounts_cli.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 29c934453..558f4d3c4 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -57,7 +57,7 @@ module Mastodon option :role option :reattach, type: :boolean option :force, type: :boolean - desc 'create USERNAME', 'Create a new user' + desc 'create USERNAME', 'Create a new user account' long_desc <<-LONG_DESC Create a new user account with a given USERNAME and an e-mail address provided with --email. @@ -133,7 +133,7 @@ module Mastodon option :disable_2fa, type: :boolean option :approve, type: :boolean option :reset_password, type: :boolean - desc 'modify USERNAME', 'Modify a user' + desc 'modify USERNAME', 'Modify a user account' long_desc <<-LONG_DESC Modify a user account. From f879cf03f03632c016a0c5b73e90a388f04bed13 Mon Sep 17 00:00:00 2001 From: The Stranjer <791672+TheStranjer@users.noreply.github.com> Date: Sat, 13 Aug 2022 07:44:34 -0600 Subject: [PATCH 032/280] Make Mastodon use its own gemset (#17858) --- .ruby-gemset | 1 + 1 file changed, 1 insertion(+) create mode 100644 .ruby-gemset diff --git a/.ruby-gemset b/.ruby-gemset new file mode 100644 index 000000000..2b97bf65d --- /dev/null +++ b/.ruby-gemset @@ -0,0 +1 @@ +mastodon From aa33c7f26e67ca2afdd69557ffbae3d9ae656dce Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 15 Aug 2022 00:39:44 +0200 Subject: [PATCH 033/280] New Crowdin updates (#18905) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations devise.en.yml (Urdu (Pakistan)) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Spanish, Argentina) * New translations devise.en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Spanish, Mexico) * New translations devise.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations activerecord.en.yml (Bengali) * New translations doorkeeper.en.yml (Tamil) * New translations devise.en.yml (Bengali) * New translations en.yml (Marathi) * New translations activerecord.en.yml (Marathi) * New translations doorkeeper.en.yml (Marathi) * New translations devise.en.yml (Thai) * New translations en.yml (Croatian) * New translations simple_form.en.yml (Croatian) * New translations en.yml (Spanish, Argentina) * New translations devise.en.yml (Tamil) * New translations devise.en.yml (Vietnamese) * New translations devise.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Vietnamese) * New translations en.yml (Galician) * New translations simple_form.en.yml (Galician) * New translations devise.en.yml (Galician) * New translations doorkeeper.en.yml (Galician) * New translations devise.en.yml (Icelandic) * New translations doorkeeper.en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Tamil) * New translations simple_form.en.yml (Indonesian) * New translations devise.en.yml (Indonesian) * New translations doorkeeper.en.yml (Indonesian) * New translations en.yml (Persian) * New translations simple_form.en.yml (Persian) * New translations activerecord.en.yml (Persian) * New translations devise.en.yml (Persian) * New translations doorkeeper.en.yml (Persian) * New translations en.yml (Tamil) * New translations simple_form.en.yml (Tamil) * New translations activerecord.en.yml (Croatian) * New translations devise.en.yml (Croatian) * New translations en.yml (English, United Kingdom) * New translations en.yml (Telugu) * New translations doorkeeper.en.yml (Hindi) * New translations devise.en.yml (English, United Kingdom) * New translations en.yml (Welsh) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations devise.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations en.yml (Malay) * New translations devise.en.yml (Hindi) * New translations doorkeeper.en.yml (Croatian) * New translations en.yml (Estonian) * New translations en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations devise.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations simple_form.en.yml (Kazakh) * New translations activerecord.en.yml (Kazakh) * New translations devise.en.yml (Kazakh) * New translations doorkeeper.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations activerecord.en.yml (Hindi) * New translations activerecord.en.yml (Estonian) * New translations devise.en.yml (Estonian) * New translations doorkeeper.en.yml (Estonian) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations devise.en.yml (Latvian) * New translations doorkeeper.en.yml (Latvian) * New translations en.yml (Hindi) * New translations devise.en.yml (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations activerecord.en.yml (Sinhala) * New translations devise.en.yml (Sinhala) * New translations doorkeeper.en.yml (Sinhala) * New translations en.yml (Cornish) * New translations en.yml (Kannada) * New translations en.yml (Sinhala) * New translations devise.en.yml (Kannada) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations simple_form.en.yml (Asturian) * New translations activerecord.en.yml (Asturian) * New translations simple_form.en.yml (Sinhala) * New translations doorkeeper.en.yml (Breton) * New translations en.yml (Uyghur) * New translations simple_form.en.yml (Tatar) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations devise.en.yml (Breton) * New translations devise.en.yml (Tatar) * New translations doorkeeper.en.yml (Tatar) * New translations en.yml (Malayalam) * New translations simple_form.en.yml (Malayalam) * New translations activerecord.en.yml (Malayalam) * New translations devise.en.yml (Malayalam) * New translations doorkeeper.en.yml (Malayalam) * New translations en.yml (Breton) * New translations simple_form.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations devise.en.yml (Asturian) * New translations doorkeeper.en.yml (Asturian) * New translations simple_form.en.yml (Kabyle) * New translations activerecord.en.yml (Sardinian) * New translations devise.en.yml (Sardinian) * New translations doorkeeper.en.yml (Sardinian) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations activerecord.en.yml (Kabyle) * New translations en.yml (Sardinian) * New translations devise.en.yml (Kabyle) * New translations doorkeeper.en.yml (Kabyle) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations devise.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations en.yml (Taigi) * New translations simple_form.en.yml (Sardinian) * New translations doorkeeper.en.yml (Corsican) * New translations en.yml (Occitan) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Occitan) * New translations activerecord.en.yml (Occitan) * New translations devise.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations devise.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations devise.en.yml (Corsican) * New translations devise.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations devise.en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations devise.en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Vietnamese) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Ido) * New translations en.yml (German) * New translations en.yml (German) * New translations en.json (Hebrew) * New translations en.json (Hebrew) * New translations en.yml (Hebrew) * New translations activerecord.en.yml (German) * New translations en.yml (Hebrew) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Esperanto) * New translations en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Spanish) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations activerecord.en.yml (German) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations devise.en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Slovak) * New translations en.json (Finnish) * New translations en.json (Finnish) * New translations simple_form.en.yml (Finnish) * New translations activerecord.en.yml (Finnish) * New translations doorkeeper.en.yml (Finnish) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations en.yml (German) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations devise.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Albanian) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Esperanto) * New translations en.json (Slovak) * New translations en.yml (Slovak) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 1 + app/javascript/mastodon/locales/ar.json | 1 + app/javascript/mastodon/locales/ast.json | 1 + app/javascript/mastodon/locales/bg.json | 1 + app/javascript/mastodon/locales/bn.json | 1 + app/javascript/mastodon/locales/br.json | 21 +-- app/javascript/mastodon/locales/ca.json | 5 +- app/javascript/mastodon/locales/ckb.json | 1 + app/javascript/mastodon/locales/co.json | 1 + app/javascript/mastodon/locales/cs.json | 1 + app/javascript/mastodon/locales/cy.json | 1 + app/javascript/mastodon/locales/da.json | 5 +- app/javascript/mastodon/locales/de.json | 5 +- .../mastodon/locales/defaultMessages.json | 12 ++ app/javascript/mastodon/locales/el.json | 5 +- app/javascript/mastodon/locales/en-GB.json | 1 + app/javascript/mastodon/locales/en.json | 1 + app/javascript/mastodon/locales/eo.json | 5 +- app/javascript/mastodon/locales/es-AR.json | 5 +- app/javascript/mastodon/locales/es-MX.json | 5 +- app/javascript/mastodon/locales/es.json | 5 +- app/javascript/mastodon/locales/et.json | 1 + app/javascript/mastodon/locales/eu.json | 1 + app/javascript/mastodon/locales/fa.json | 1 + app/javascript/mastodon/locales/fi.json | 67 ++++----- app/javascript/mastodon/locales/fr.json | 5 +- app/javascript/mastodon/locales/fy.json | 1 + app/javascript/mastodon/locales/ga.json | 1 + app/javascript/mastodon/locales/gd.json | 35 ++--- app/javascript/mastodon/locales/gl.json | 5 +- app/javascript/mastodon/locales/he.json | 7 +- app/javascript/mastodon/locales/hi.json | 1 + app/javascript/mastodon/locales/hr.json | 1 + app/javascript/mastodon/locales/hu.json | 5 +- app/javascript/mastodon/locales/hy.json | 1 + app/javascript/mastodon/locales/id.json | 1 + app/javascript/mastodon/locales/io.json | 5 +- app/javascript/mastodon/locales/is.json | 9 +- app/javascript/mastodon/locales/it.json | 5 +- app/javascript/mastodon/locales/ja.json | 5 +- app/javascript/mastodon/locales/ka.json | 1 + app/javascript/mastodon/locales/kab.json | 1 + app/javascript/mastodon/locales/kk.json | 1 + app/javascript/mastodon/locales/kn.json | 1 + app/javascript/mastodon/locales/ko.json | 5 +- app/javascript/mastodon/locales/ku.json | 5 +- app/javascript/mastodon/locales/kw.json | 1 + app/javascript/mastodon/locales/lt.json | 1 + app/javascript/mastodon/locales/lv.json | 5 +- app/javascript/mastodon/locales/mk.json | 1 + app/javascript/mastodon/locales/ml.json | 1 + app/javascript/mastodon/locales/mr.json | 1 + app/javascript/mastodon/locales/ms.json | 1 + app/javascript/mastodon/locales/nl.json | 19 +-- app/javascript/mastodon/locales/nn.json | 137 +++++++++--------- app/javascript/mastodon/locales/no.json | 1 + app/javascript/mastodon/locales/oc.json | 1 + app/javascript/mastodon/locales/pa.json | 1 + app/javascript/mastodon/locales/pl.json | 5 +- app/javascript/mastodon/locales/pt-BR.json | 1 + app/javascript/mastodon/locales/pt-PT.json | 5 +- app/javascript/mastodon/locales/ro.json | 1 + app/javascript/mastodon/locales/ru.json | 5 +- app/javascript/mastodon/locales/sa.json | 1 + app/javascript/mastodon/locales/sc.json | 1 + app/javascript/mastodon/locales/si.json | 1 + app/javascript/mastodon/locales/sk.json | 13 +- app/javascript/mastodon/locales/sl.json | 5 +- app/javascript/mastodon/locales/sq.json | 5 +- app/javascript/mastodon/locales/sr-Latn.json | 1 + app/javascript/mastodon/locales/sr.json | 1 + app/javascript/mastodon/locales/sv.json | 1 + app/javascript/mastodon/locales/szl.json | 1 + app/javascript/mastodon/locales/ta.json | 1 + app/javascript/mastodon/locales/tai.json | 1 + app/javascript/mastodon/locales/te.json | 1 + app/javascript/mastodon/locales/th.json | 9 +- app/javascript/mastodon/locales/tr.json | 5 +- app/javascript/mastodon/locales/tt.json | 1 + app/javascript/mastodon/locales/ug.json | 1 + app/javascript/mastodon/locales/uk.json | 5 +- app/javascript/mastodon/locales/ur.json | 1 + app/javascript/mastodon/locales/vi.json | 5 +- app/javascript/mastodon/locales/zgh.json | 1 + app/javascript/mastodon/locales/zh-CN.json | 7 +- app/javascript/mastodon/locales/zh-HK.json | 1 + app/javascript/mastodon/locales/zh-TW.json | 5 +- config/locales/activerecord.de.yml | 11 ++ config/locales/activerecord.es-MX.yml | 2 + config/locales/activerecord.fi.yml | 19 +++ config/locales/activerecord.gd.yml | 19 +++ config/locales/activerecord.ja.yml | 6 + config/locales/activerecord.ku.yml | 2 + config/locales/activerecord.nn.yml | 32 +++- config/locales/de.yml | 82 +++++++++++ config/locales/devise.en-GB.yml | 1 + config/locales/devise.ku.yml | 6 +- config/locales/devise.nl.yml | 2 +- config/locales/devise.nn.yml | 50 +++---- config/locales/doorkeeper.fi.yml | 8 + config/locales/doorkeeper.nn.yml | 33 ++++- config/locales/doorkeeper.th.yml | 2 +- config/locales/eo.yml | 71 ++++----- config/locales/es-MX.yml | 70 +++++++++ config/locales/gd.yml | 113 ++++++++++++++- config/locales/he.yml | 109 ++++++++++++-- config/locales/ja.yml | 38 +++++ config/locales/ku.yml | 11 ++ config/locales/lv.yml | 10 +- config/locales/nl.yml | 11 +- config/locales/nn.yml | 13 +- config/locales/ru.yml | 2 + config/locales/simple_form.de.yml | 25 ++++ config/locales/simple_form.eo.yml | 2 +- config/locales/simple_form.es-MX.yml | 1 + config/locales/simple_form.fi.yml | 20 +++ config/locales/simple_form.gd.yml | 31 ++++ config/locales/simple_form.nl.yml | 2 +- config/locales/simple_form.nn.yml | 18 +++ config/locales/simple_form.ru.yml | 8 +- config/locales/simple_form.th.yml | 12 +- config/locales/sk.yml | 31 ++++ config/locales/th.yml | 42 +++++- config/locales/vi.yml | 2 +- config/locales/zh-CN.yml | 2 + 125 files changed, 1115 insertions(+), 320 deletions(-) create mode 100644 config/locales/devise.en-GB.yml diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 942c8191f..cb5a70dd4 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Aankondiging", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 13d6e4e7a..45a5beede 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "المعذرة!", "announcement.announcement": "إعلان", "attachments_list.unprocessed": "(غير معالَج)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} في الأسبوع", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "bundle_column_error.body": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 034885e81..289e328f5 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "¡Meca!", "announcement.announcement": "Anunciu", "attachments_list.unprocessed": "(ensin procesar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per selmana", "boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada", "bundle_column_error.body": "Asocedió daqué malo mentanto se cargaba esti componente.", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 89f2efc85..160219e09 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Опаа!", "announcement.announcement": "Оповестяване", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} на седмица", "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път", "bundle_column_error.body": "Нещо се обърка при зареждането на този компонент.", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 852c4c720..d4626e463 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ওহো!", "announcement.announcement": "ঘোষণা", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "প্রতি সপ্তাহে {count}", "boost_modal.combo": "পরেরবার আপনি {combo} টিপলে এটি আর আসবে না", "bundle_column_error.body": "এই অংশটি দেখতে যেয়ে কোনো সমস্যা হয়েছে।.", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index ac504c49c..c784c697a 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -18,7 +18,7 @@ "account.followers": "Heulier·ezed·ien", "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.", "account.followers_counter": "{count, plural, other{{counter} Heulier}}", - "account.following": "Following", + "account.following": "O heuliañ", "account.following_counter": "{count, plural, other {{counter} Heuliañ}}", "account.follows.empty": "An implijer·ez-mañ na heul den ebet.", "account.follows_you": "Ho heul", @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hopala!", "announcement.announcement": "Kemenn", "attachments_list.unprocessed": "(ket meret)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} bep sizhun", "boost_modal.combo": "Ar wezh kentañ e c'halliot gwaskañ war {combo} evit tremen hebiou", "bundle_column_error.body": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", @@ -108,7 +109,7 @@ "compose_form.poll.switch_to_single": "Kemmañ ar sontadeg evit aotren un dibab hepken", "compose_form.publish": "Embann", "compose_form.publish_loud": "{publish} !", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Enrollañ ar cheñchamantoù", "compose_form.sensitive.hide": "Merkañ ar media evel kizidik", "compose_form.sensitive.marked": "Merket eo ar media evel kizidik", "compose_form.sensitive.unmarked": "N'eo ket merket ar media evel kizidik", @@ -149,7 +150,7 @@ "embed.instructions": "Enkorfit ar statud war ho lec'hienn en ur eilañ ar c'hod dindan.", "embed.preview": "Setu penaos e vo diskouezet:", "emoji_button.activity": "Obererezh", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Diverkañ", "emoji_button.custom": "Kempennet", "emoji_button.flags": "Bannieloù", "emoji_button.food": "Boued hag Evaj", @@ -169,7 +170,7 @@ "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Unan e mesk anezho", "hashtag.column_settings.tag_mode.none": "Hini ebet anezho", "hashtag.column_settings.tag_toggle": "Endelc'her gerioù-alc'hwez ouzhpenn evit ar bannad-mañ", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Heuliañ ar ger-klik", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Paouez heuliañ ar ger-klik", "home.column_settings.basic": "Diazez", "home.column_settings.show_reblogs": "Diskouez ar skignadennoù", "home.column_settings.show_replies": "Diskouez ar respontoù", @@ -270,8 +271,8 @@ "lightbox.expand": "Ledanaat boest hewel ar skeudenn", "lightbox.next": "Da-heul", "lightbox.previous": "A-raok", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Diskouez an aelad memes tra", + "limited_account_hint.title": "Kuzhet eo bet an aelad-mañ gant habaskerien·ezed ho servijer.", "lists.account.add": "Ouzhpennañ d'al listenn", "lists.account.remove": "Lemel kuit eus al listenn", "lists.delete": "Dilemel al listenn", @@ -317,8 +318,8 @@ "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", "navigation_bar.security": "Diogelroez", - "notification.admin.report": "{name} reported {target}", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.report": "Disklêriet eo bet {target} gant {name}", + "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", "notification.favourite": "{name} en/he deus lakaet ho toud en e/he muiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index bc6029fe0..5549b3952 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Vaja!", "announcement.announcement": "Anunci", "attachments_list.unprocessed": "(sense processar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Qualsevol d’aquests", "hashtag.column_settings.tag_mode.none": "Cap d’aquests", "hashtag.column_settings.tag_toggle": "Inclou etiquetes addicionals per a aquesta columna", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Segueix etiqueta", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Deixa de seguir etiqueta", "home.column_settings.basic": "Bàsic", "home.column_settings.show_reblogs": "Mostra els impulsos", "home.column_settings.show_replies": "Mostra les respostes", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 80c5089ae..1addda370 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "تەححح!", "announcement.announcement": "بانگەواز", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} هەرهەفتە", "boost_modal.combo": "دەتوانیت دەست بنێی بە سەر {combo} بۆ بازدان لە جاری داهاتوو", "bundle_column_error.body": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 2dbc256ee..63d214046 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Uups!", "announcement.announcement": "Annunziu", "attachments_list.unprocessed": "(micca trattata)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Pudete appughjà nant'à {combo} per saltà quessa a prussima volta", "bundle_column_error.body": "C'hè statu un prublemu caricandu st'elementu.", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 2f667eae6..7ac077ae5 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Jejda!", "announcement.announcement": "Oznámení", "attachments_list.unprocessed": "(nezpracováno)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 228fd280f..f6440db72 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Wps!", "announcement.announcement": "Cyhoeddiad", "attachments_list.unprocessed": "(heb eu prosesu)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} yr wythnos", "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 0898b9081..ef7f85a3b 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Bekendtgørelse", "attachments_list.unprocessed": "(ubehandlet)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} pr. uge", "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Nogle af disse", "hashtag.column_settings.tag_mode.none": "Ingen af disse", "hashtag.column_settings.tag_toggle": "Inkludér ekstra tags for denne kolonne", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Følg hashtag", "hashtag.total_volume": "Samlet volumen {days, plural, one {den seneste dag} other {de seneste {days} dage}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Stop med at følge hashtag", "home.column_settings.basic": "Grundlæggende", "home.column_settings.show_reblogs": "Vis boosts", "home.column_settings.show_replies": "Vis svar", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index f2ec638c7..8a9d0f06d 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hoppla!", "announcement.announcement": "Ankündigung", "attachments_list.unprocessed": "(ausstehend)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Eins von diesen", "hashtag.column_settings.tag_mode.none": "Keins von diesen", "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Hashtag folgen", "hashtag.total_volume": "Gesamtes Aufkommen {days, plural, one {am letzten Tag} other {in den letzten {days} Tagen}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hashtag entfolgen", "home.column_settings.basic": "Einfach", "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen", "home.column_settings.show_replies": "Antworten anzeigen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 908396348..760602f6e 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1078,6 +1078,18 @@ { "defaultMessage": "Download file", "id": "video.download" + }, + { + "defaultMessage": "Hide audio", + "id": "audio.hide" + }, + { + "defaultMessage": "Sensitive content", + "id": "status.sensitive_warning" + }, + { + "defaultMessage": "Media hidden", + "id": "status.media_hidden" } ], "path": "app/javascript/mastodon/features/audio/index.json" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 3cfce1647..de96147cf 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Εεπ!", "announcement.announcement": "Ανακοίνωση", "attachments_list.unprocessed": "(μη επεξεργασμένο)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", "bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Οποιοδήποτε από αυτά", "hashtag.column_settings.tag_mode.none": "Κανένα από αυτά", "hashtag.column_settings.tag_toggle": "Προσθήκη επιπλέον ταμπελών για την κολώνα", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Παρακολούθηση ετικέτας", "hashtag.total_volume": "Συνολικός όγκος κατά την τελευταία {days, plural, one {ημέρα} other {{days} ημέρες}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Διακοπή παρακολούθησης ετικέτας", "home.column_settings.basic": "Βασικές ρυθμίσεις", "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 535c5852a..988793357 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index ed7ea2992..22ecee8df 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 67872ff0a..a86842d08 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Aj!", "announcement.announcement": "Anonco", "attachments_list.unprocessed": "(neprilaborita)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Iu ajn", "hashtag.column_settings.tag_mode.none": "Neniu", "hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Sekvi la kradvorton", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Ne plu sekvi la kradvorton", "home.column_settings.basic": "Bazaj agordoj", "home.column_settings.show_reblogs": "Montri plusendojn", "home.column_settings.show_replies": "Montri respondojn", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 0eeb6e1ff..9f2bbc2e4 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "¡Epa!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "[sin procesar]", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estas", "hashtag.column_settings.tag_mode.none": "Ninguna de estas", "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionales para esta columna", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir etiqueta", "hashtag.total_volume": "Volumen total en el/los último/s {days, plural, one {día} other {{days} días}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Dejar de seguir etiqueta", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar adhesiones", "home.column_settings.show_replies": "Mostrar respuestas", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 23a8d7247..d8854041b 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -221,7 +222,7 @@ "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.total_volume": "Volumen total en los últimos {days, plural, one {día} other {{days} días}}", "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Seguidos", "timeline_hint.resources.statuses": "Toots más antiguos", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} en los últimos {days, plural, one {días} other {{days} días}}", "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.", "units.short.billion": "{count} MM", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 0ca847b35..928b870e4 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir etiqueta", "hashtag.total_volume": "Volumen total en los últimos {days, plural, one {día} other {{days} días}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Dejar de seguir etiqueta", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 2b6594b87..0bac1f3d3 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oih!", "announcement.announcement": "Teadaanne", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} nädalas", "boost_modal.combo": "Võite vajutada {combo}, et see järgmine kord vahele jätta", "bundle_column_error.body": "Midagi läks valesti selle komponendi laadimisel.", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 44ab5f80e..76c520a59 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ene!", "announcement.announcement": "Iragarpena", "attachments_list.unprocessed": "(prozesatu gabe)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} asteko", "boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko", "bundle_column_error.body": "Zerbait okerra gertatu da osagai hau kargatzean.", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 977b0aa74..c3876e2e3 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ای وای!", "announcement.announcement": "اعلامیه", "attachments_list.unprocessed": "(پردازش نشده)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} در هفته", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", "bundle_column_error.body": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index faa322df9..46316731a 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -18,7 +18,7 @@ "account.followers": "Seuraajat", "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.", "account.followers_counter": "{count, plural, one {{counter} seuraaja} other {{counter} seuraajat}}", - "account.following": "Following", + "account.following": "Seurataan", "account.following_counter": "{count, plural, one {{counter} seuraa} other {{counter} seuraa}}", "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", @@ -41,12 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Salli @{name}", "account.unblock_domain": "Salli {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Poista esto", "account.unendorse": "Poista suosittelu profiilistasi", "account.unfollow": "Lopeta seuraaminen", "account.unmute": "Poista käyttäjän @{name} mykistys", "account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta", - "account.unmute_short": "Unmute", + "account.unmute_short": "Poista mykistys", "account_note.placeholder": "Lisää muistiinpano napsauttamalla", "admin.dashboard.daily_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen päivään mennessä", "admin.dashboard.monthly_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen kuukauteen mennessä", @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hups!", "announcement.announcement": "Ilmoitus", "attachments_list.unprocessed": "(käsittelemätön)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", "bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.", @@ -70,7 +71,7 @@ "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", - "column.direct": "Direct messages", + "column.direct": "Yksityisviestit", "column.directory": "Selaa profiileja", "column.domain_blocks": "Piilotetut verkkotunnukset", "column.favourites": "Suosikit", @@ -92,10 +93,10 @@ "community.column_settings.local_only": "Vain paikalliset", "community.column_settings.media_only": "Vain media", "community.column_settings.remote_only": "Vain etäkäyttö", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Vaihda kieli", + "compose.language.search": "Hae kieliä...", "compose_form.direct_message_warning_learn_more": "Lisätietoja", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Mastodonin viestit eivät ole päästä päähän salattuja. Älä jaa arkaluonteisia tietoja Mastodonissa.", "compose_form.hashtag_warning": "Tätä julkaisua listata minkään hastagin alle, koska se on listaamaton. Ainoastaan julkisia julkaisuja etsiä hastageilla.", "compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.", "compose_form.lock_disclaimer.lock": "lukittu", @@ -106,7 +107,7 @@ "compose_form.poll.remove_option": "Poista tämä valinta", "compose_form.poll.switch_to_multiple": "Muuta kysely monivalinnaksi", "compose_form.poll.switch_to_single": "Muuta kysely sallimaan vain yksi valinta", - "compose_form.publish": "Publish", + "compose_form.publish": "Julkaise", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Tallenna muutokset", "compose_form.sensitive.hide": "{count, plural, one {Merkitse media arkaluontoiseksi} other {Merkitse media arkaluontoiseksi}}", @@ -149,7 +150,7 @@ "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Tyhjennä", "emoji_button.custom": "Mukautetut", "emoji_button.flags": "Liput", "emoji_button.food": "Ruoka ja juoma", @@ -169,7 +170,7 @@ "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Sinulla ei ole vielä yksityisviestejä. Kun lähetät tai vastaanotat sellaisen, se näkyy tässä.", "empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä estetty.", "empty_column.explore_statuses": "Mikään ei ole nyt trendi. Tarkista myöhemmin!", "empty_column.favourited_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Mikä tahansa näistä", "hashtag.column_settings.tag_mode.none": "Ei mitään näistä", "hashtag.column_settings.tag_toggle": "Sisällytä lisätunnisteet tähän sarakkeeseen", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Seuraa hashtagia", + "hashtag.total_volume": "Kokonaismäärä viimeiset {days, plural, one {päivä} other {{days} päivää}}", + "hashtag.unfollow": "Lopeta seuraaminen hashtagilla", "home.column_settings.basic": "Perusasetukset", "home.column_settings.show_reblogs": "Näytä buustaukset", "home.column_settings.show_replies": "Näytä vastaukset", @@ -237,7 +238,7 @@ "keyboard_shortcuts.column": "Kohdista sarakkeeseen", "keyboard_shortcuts.compose": "siirry tekstinsyöttöön", "keyboard_shortcuts.description": "Kuvaus", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "avaa yksityisviesti sarake", "keyboard_shortcuts.down": "Siirry listassa alaspäin", "keyboard_shortcuts.enter": "Avaa julkaisu", "keyboard_shortcuts.favourite": "Lisää suosikkeihin", @@ -270,8 +271,8 @@ "lightbox.expand": "Laajenna kuvan näkymälaatikko", "lightbox.next": "Seuraava", "lightbox.previous": "Edellinen", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Näytä profiili joka tapauksessa", + "limited_account_hint.title": "Tämä profiili on piilotettu serverisi valvojien toimesta.", "lists.account.add": "Lisää listaan", "lists.account.remove": "Poista listasta", "lists.delete": "Poista lista", @@ -298,11 +299,11 @@ "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", "navigation_bar.compose": "Luo uusi viesti", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Yksityisviestit", "navigation_bar.discover": "Löydä uutta", "navigation_bar.domain_blocks": "Estetyt verkkotunnukset", "navigation_bar.edit_profile": "Muokkaa profiilia", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Selaa", "navigation_bar.favourites": "Suosikit", "navigation_bar.filters": "Mykistetyt sanat", "navigation_bar.follow_requests": "Seuraamispyynnöt", @@ -317,7 +318,7 @@ "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.security": "Turvallisuus", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} ilmoitti {target}", "notification.admin.sign_up": "{name} rekisteröitynyt", "notification.favourite": "{name} tykkäsi viestistäsi", "notification.follow": "{name} seurasi sinua", @@ -330,7 +331,7 @@ "notification.update": "{name} muokkasi viestiä", "notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Uudet raportit:", "notifications.column_settings.admin.sign_up": "Uudet kirjautumiset:", "notifications.column_settings.alert": "Työpöytäilmoitukset", "notifications.column_settings.favourite": "Tykkäykset:", @@ -377,12 +378,12 @@ "poll_button.remove_poll": "Poista kysely", "privacy.change": "Muuta julkaisun näkyvyyttä", "privacy.direct.long": "Julkaise vain mainituille käyttäjille", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Vain mainitut henkilöt", "privacy.private.long": "Julkaise vain seuraajille", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Vain seuraajat", + "privacy.public.long": "Näkyvissä kaikille", "privacy.public.short": "Julkinen", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Näkyvissä kaikille, mutta jättäen pois hakemisen mahdollisuus", "privacy.unlisted.short": "Listaamaton julkinen", "refresh": "Päivitä", "regeneration_indicator.label": "Ladataan…", @@ -436,11 +437,11 @@ "report.thanks.title_actionable": "Kiitos raportista, tutkimme asiaa.", "report.unfollow": "Lopeta seuraaminen @{name}", "report.unfollow_explanation": "Seuraat tätä tiliä. Jotta et enää näkisi heidän kirjoituksiaan, lopeta niiden seuraaminen.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} viestiä}} liitteenä", + "report_notification.categories.other": "Muu", + "report_notification.categories.spam": "Roskaposti", + "report_notification.categories.violation": "Sääntöjen rikkominen", + "report_notification.open": "Avaa raportti", "search.placeholder": "Hae", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", @@ -471,7 +472,7 @@ "status.embed": "Upota", "status.favourite": "Tykkää", "status.filtered": "Suodatettu", - "status.hide": "Hide toot", + "status.hide": "Piilota toot", "status.history.created": "{name} luotu {date}", "status.history.edited": "{name} muokkasi {date}", "status.load_more": "Lataa lisää", @@ -495,7 +496,7 @@ "status.report": "Raportoi @{name}", "status.sensitive_warning": "Arkaluontoista sisältöä", "status.share": "Jaa", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Näytä joka tapauksessa", "status.show_less": "Näytä vähemmän", "status.show_less_all": "Näytä vähemmän kaikista", "status.show_more": "Näytä lisää", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "Seuraajat", "timeline_hint.resources.follows": "Seuraa", "timeline_hint.resources.statuses": "Vanhemmat julkaisut", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} viimeinen {days, plural, one {päivä} other {{days} päivää}}", "trends.trending_now": "Suosittua nyt", "ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.", "units.short.billion": "{count} mrd.", @@ -532,7 +533,7 @@ "upload_error.poll": "Tiedon lataaminen ei ole sallittua kyselyissä.", "upload_form.audio_description": "Kuvaile kuulovammaisille", "upload_form.description": "Anna kuvaus näkörajoitteisia varten", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Kuvausta ei ole lisätty", "upload_form.edit": "Muokkaa", "upload_form.thumbnail": "Vaihda pikkukuva", "upload_form.undo": "Peru", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 18b889e9b..b6b8e5d6f 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oups !", "announcement.announcement": "Annonce", "attachments_list.unprocessed": "(non traité)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", "bundle_column_error.body": "Une erreur s’est produite lors du chargement de ce composant.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Au moins un de ces éléments", "hashtag.column_settings.tag_mode.none": "Aucun de ces éléments", "hashtag.column_settings.tag_toggle": "Inclure des hashtags additionnels pour cette colonne", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Suivre le hashtag", "hashtag.total_volume": "Volume total {days, plural, one {des dernières 24h} other {des {days} derniers jours}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Ne plus suivre le hashtag", "home.column_settings.basic": "Basique", "home.column_settings.show_reblogs": "Afficher les partages", "home.column_settings.show_replies": "Afficher les réponses", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index ea5a61cdc..2ff93a6e3 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(net ferwurke)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 1dd7e635f..6a7aff2af 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hiúps!", "announcement.announcement": "Fógra", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index f7ffe0d87..cfaa429a7 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oich!", "announcement.announcement": "Brath-fios", "attachments_list.unprocessed": "(gun phròiseasadh)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} san t-seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", "bundle_column_error.body": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Gin sam bith dhiubh", "hashtag.column_settings.tag_mode.none": "Às aonais gin sam bith dhiubh", "hashtag.column_settings.tag_toggle": "Gabh a-steach barrachd tagaichean sa cholbh seo", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Lean air an taga hais", + "hashtag.total_volume": "An t-iomlan sna {days, plural, one {{days} latha} two {{days} latha} few {{days} làithean} other {{days} latha}} seo chaidh", + "hashtag.unfollow": "Na lean air an taga hais tuilleadh", "home.column_settings.basic": "Bunasach", "home.column_settings.show_reblogs": "Seall na brosnachaidhean", "home.column_settings.show_replies": "Seall na freagairtean", @@ -317,7 +318,7 @@ "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", "navigation_bar.security": "Tèarainteachd", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "Rinn {name} mu {target}", "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", "notification.follow": "Tha {name} a’ leantainn ort a-nis", @@ -330,7 +331,7 @@ "notification.update": "Dheasaich {name} post", "notifications.clear": "Falamhaich na brathan", "notifications.clear_confirmation": "A bheil thu cinnteach gu bheil thu airson na brathan uile agad fhalamhachadh gu buan?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Gearanan ùra:", "notifications.column_settings.admin.sign_up": "Clàraidhean ùra:", "notifications.column_settings.alert": "Brathan deasga", "notifications.column_settings.favourite": "Na h-annsachdan:", @@ -388,11 +389,11 @@ "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", "relative_time.days": "{number}l", - "relative_time.full.days": "{count, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air ais", - "relative_time.full.hours": "{count, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air ais", + "relative_time.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air ais", + "relative_time.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air ais", "relative_time.full.just_now": "an-dràsta fhèin", - "relative_time.full.minutes": "{count, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}} air ais", - "relative_time.full.seconds": "{count, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air ais", + "relative_time.full.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}} air ais", + "relative_time.full.seconds": "{number, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air ais", "relative_time.hours": "{number}u", "relative_time.just_now": "an-dràsta", "relative_time.minutes": "{number}m", @@ -436,11 +437,11 @@ "report.thanks.title_actionable": "Mòran taing airson a’ ghearain, bheir sinn sùil air.", "report.unfollow": "Na lean air @{name} tuilleadh", "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca air inbhir na dachaigh agad.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "Tha {count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}} ceangailte ris", + "report_notification.categories.other": "Eile", + "report_notification.categories.spam": "Spama", + "report_notification.categories.violation": "Briseadh riaghailte", + "report_notification.open": "Fosgail an gearan", "search.placeholder": "Lorg", "search_popout.search_format": "Fòrmat adhartach an luirg", "search_popout.tips.full_text": "Bheir teacsa sìmplidh dhut na postaichean a sgrìobh thu, a tha nan annsachdan dhut, a bhrosnaich thu no san deach iomradh a thoirt ort cho math ri ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas.", @@ -471,7 +472,7 @@ "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", "status.filtered": "Criathraichte", - "status.hide": "Hide toot", + "status.hide": "Falaich am post", "status.history.created": "Chruthaich {name} {date} e", "status.history.edited": "Dheasaich {name} {date} e", "status.load_more": "Luchdaich barrachd dheth", @@ -495,7 +496,7 @@ "status.report": "Dèan gearan mu @{name}", "status.sensitive_warning": "Susbaint fhrionasach", "status.share": "Co-roinn", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Seall e co-dhiù", "status.show_less": "Seall nas lugha dheth", "status.show_less_all": "Seall nas lugha dhen a h-uile", "status.show_more": "Seall barrachd dheth", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "Luchd-leantainn", "timeline_hint.resources.follows": "A’ leantainn air", "timeline_hint.resources.statuses": "Postaichean nas sine", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} sna {days, plural, one {{days} latha} two {{days} latha} few {{days} làithean} other {{days} latha}} seo chaidh", "trends.trending_now": "A’ treandadh an-dràsta", "ui.beforeunload": "Caillidh tu an dreachd agad ma dh’fhàgas tu Mastodon an-dràsta.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 56ceb54e8..adef612c6 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Vaites!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sen procesar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", "bundle_column_error.body": "Ocorreu un erro ó cargar este compoñente.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Calquera destes", "hashtag.column_settings.tag_mode.none": "Ningún destes", "hashtag.column_settings.tag_toggle": "Incluír cancelos adicionais para esta columna", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir cancelo", "hashtag.total_volume": "Cantidade total {days, plural, one {no último día} other {nos {days} últimos días}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Deixar de seguir cancelo", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Amosar compartidos", "home.column_settings.show_replies": "Amosar respostas", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 4cb3380b4..c0c0b57f1 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "אופס!", "announcement.announcement": "הכרזה", "attachments_list.unprocessed": "(לא מעובד)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", "bundle_column_error.body": "משהו השתבש בעת טעינת הרכיב הזה.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "כל אלה", "hashtag.column_settings.tag_mode.none": "אף אחד מאלה", "hashtag.column_settings.tag_toggle": "כלול תגיות נוספות בטור זה", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "מעקב אחר תגית", + "hashtag.total_volume": "נפח כולל ב {days, plural, one {יום} other {{days} ימים}} האחרונים", + "hashtag.unfollow": "ביטול מעקב אחר תגית", "home.column_settings.basic": "למתחילים", "home.column_settings.show_reblogs": "הצגת הדהודים", "home.column_settings.show_replies": "הצגת תגובות", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index aa76ebf10..9f35187f2 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "उफ़!", "announcement.announcement": "घोषणा", "attachments_list.unprocessed": "(असंसाधित)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} हर सप्ताह", "boost_modal.combo": "अगली बार स्किप करने के लिए आप {combo} दबा सकते है", "bundle_column_error.body": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index fe0379f0a..9f2df3c71 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Najava", "attachments_list.unprocessed": "(neobrađeno)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} tjedno", "boost_modal.combo": "Možete pritisnuti {combo} kako biste preskočili ovo sljedeći put", "bundle_column_error.body": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index def9348ec..5b2b98172 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hoppá!", "announcement.announcement": "Közlemény", "attachments_list.unprocessed": "(feldolgozatlan)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", "bundle_column_error.body": "Valami hiba történt a komponens betöltése közben.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Bármelyik", "hashtag.column_settings.tag_mode.none": "Egyik sem", "hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Hashtag követése", "hashtag.total_volume": "Teljes mennyiség az elmúlt {days, plural, one {napban} other {{days} napban}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hashtag követésének megszüntetése", "home.column_settings.basic": "Alapvető", "home.column_settings.show_reblogs": "Megtolások mutatása", "home.column_settings.show_replies": "Válaszok megjelenítése", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 9aa8ec4c3..f552e345c 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Վա՜յ", "announcement.announcement": "Յայտարարութիւններ", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "շաբաթը՝ {count}", "boost_modal.combo": "Կարող ես սեղմել {combo}՝ սա յաջորդ անգամ բաց թողնելու համար", "bundle_column_error.body": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index effc01737..2a081cfbb 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Pengumuman", "attachments_list.unprocessed": "(tidak diproses)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index d54687117..1d0a909a2 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Problemo!", "announcement.announcement": "Anunco", "attachments_list.unprocessed": "(neprocedita)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} dum singla semano", "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo", "bundle_column_error.body": "Nulo ne functionis dum chargar ca kompozaj.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Irga co", "hashtag.column_settings.tag_mode.none": "Nula co", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Sequez hashtago", "hashtag.total_volume": "Sumo en antea {days, plural,one {dio} other {{days} dii}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Desequez hashtago", "home.column_settings.basic": "Simpla", "home.column_settings.show_reblogs": "Montrar repeti", "home.column_settings.show_replies": "Montrar respondi", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e12bfe305..d74d45a76 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Úbbs!", "announcement.announcement": "Auglýsing", "attachments_list.unprocessed": "(óunnið)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Hvað sem er af þessu", "hashtag.column_settings.tag_mode.none": "Ekkert af þessu", "hashtag.column_settings.tag_toggle": "Taka með viðbótarmerki fyrir þennan dálk", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Fylgjast með myllumerki", + "hashtag.total_volume": "Heildarmagn {days, plural, one {síðasta {days} sólarhring} other {síðustu {days} daga}}", + "hashtag.unfollow": "Hætta að fylgjast með myllumerki", "home.column_settings.basic": "Einfalt", "home.column_settings.show_reblogs": "Sýna endurbirtingar", "home.column_settings.show_replies": "Birta svör", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "Fylgjendur", "timeline_hint.resources.follows": "Fylgist með", "timeline_hint.resources.statuses": "Eldri færslur", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} aðili} other {{counter} manns}} {days, plural, one {síðasta sólarhringinn} other {síðustu {days} daga}}", "trends.trending_now": "Í umræðunni núna", "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index da29dfde1..7a99d031e 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Annuncio", "attachments_list.unprocessed": "(non elaborato)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", "bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Uno o più di questi", "hashtag.column_settings.tag_mode.none": "Nessuno di questi", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Segui l'hashtag", "hashtag.total_volume": "Volume totale {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Cessa di seguire l'hashtag", "home.column_settings.basic": "Semplice", "home.column_settings.show_reblogs": "Mostra condivisioni", "home.column_settings.show_replies": "Mostra risposte", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 35c7d916e..070248d10 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "エラー!", "announcement.announcement": "お知らせ", "attachments_list.unprocessed": "(未処理)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} 回 / 週", "boost_modal.combo": "次からは{combo}を押せばスキップできます", "bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "いずれかを含む", "hashtag.column_settings.tag_mode.none": "これらを除く", "hashtag.column_settings.tag_toggle": "このカラムに追加のタグを含める", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "ハッシュタグをフォローする", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "ハッシュタグのフォローを解除", "home.column_settings.basic": "基本設定", "home.column_settings.show_reblogs": "ブースト表示", "home.column_settings.show_replies": "返信表示", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index a01b2290c..bafaca65e 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "უპს!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "კვირაში {count}", "boost_modal.combo": "შეგიძლიათ დააჭიროთ {combo}-ს რათა შემდეგ ჯერზე გამოტოვოთ ეს", "bundle_column_error.body": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index d5ab20008..ff93fc968 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ayhuh!", "announcement.announcement": "Ulɣu", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} i yimalas", "boost_modal.combo": "Tzemreḍ ad tetekkiḍ ɣef {combo} akken ad tessurfeḍ aya tikelt-nniḍen", "bundle_column_error.body": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 5334331c4..f15dc88a0 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Өй!", "announcement.announcement": "Хабарландыру", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} аптасына", "boost_modal.combo": "Келесіде өткізіп жіберу үшін басыңыз {combo}", "bundle_column_error.body": "Бұл компонентті жүктеген кезде бір қате пайда болды.", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index bde13c04c..1e81ab32a 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ಅಯ್ಯೋ!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 30cf08ff2..d8eca4ee0 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "앗!", "announcement.announcement": "공지사항", "attachments_list.unprocessed": "(처리 안 됨)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", "bundle_column_error.body": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "아무것이든", "hashtag.column_settings.tag_mode.none": "이것들을 제외하고", "hashtag.column_settings.tag_toggle": "추가 해시태그를 이 컬럼에 추가합니다", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "해시태그 팔로우", "hashtag.total_volume": "최근 {days}일 동안의 총 사용량", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "해시태그 팔로우 해제", "home.column_settings.basic": "기본", "home.column_settings.show_reblogs": "부스트 표시", "home.column_settings.show_replies": "답글 표시", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index d8c4151d3..740bcd917 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Wey li min!", "announcement.announcement": "Daxuyanî", "attachments_list.unprocessed": "(bêpêvajo)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Yek ji van", "hashtag.column_settings.tag_mode.none": "Ne yek ji van", "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Hashtagê bişopîne", "hashtag.total_volume": "Tevahiya giraniyê dawîn di {days, plural, one {roj} other {{days} roj}} de", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hashtagê neşopîne", "home.column_settings.basic": "Bingehîn", "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike", "home.column_settings.show_replies": "Bersivan nîşan bide", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 988655921..ad0e1ae31 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oups!", "announcement.announcement": "Deklaryans", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} an seythen", "boost_modal.combo": "Hwi a yll gwaska {combo} dhe woheles hemma an nessa tro", "bundle_column_error.body": "Neppyth eth yn kamm ow karga'n elven ma.", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 3df14c833..a38374230 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oi!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 1cb0095b1..60b6e75da 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Paziņojums", "attachments_list.unprocessed": "(neapstrādāti)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", "bundle_column_error.body": "Kaut kas nogāja greizi ielādējot šo komponenti.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Kāds no šiem", "hashtag.column_settings.tag_mode.none": "Neviens no šiem", "hashtag.column_settings.tag_toggle": "Iekļaut šai kolonnai papildu tagus", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seko mirkļbirkai", "hashtag.total_volume": "Kopējais apjoms par {days, plural, one {dienu} other {{days} dienām}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Pārstāj sekot mirkļbirkai", "home.column_settings.basic": "Pamata", "home.column_settings.show_reblogs": "Rādīt palielinājumus", "home.column_settings.show_replies": "Rādīt atbildes", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index faf4174f9..a00e1762c 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Упс!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} неделно", "boost_modal.combo": "Кликни {combo} за да го прескокниш ова нареден пат", "bundle_column_error.body": "Се случи проблем при вчитувањето.", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 175316e84..2e4aac762 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ശ്ശോ!", "announcement.announcement": "അറിയിപ്പ്", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "ആഴ്ച തോറും {count}", "boost_modal.combo": "അടുത്ത തവണ ഇത് ഒഴിവാക്കുവാൻ {combo} ഞെക്കാവുന്നതാണ്", "bundle_column_error.body": "ഈ ഘടകം പ്രദശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 762d94c40..3ce4fc0f9 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "अरेरे!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताह", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "हा घटक लोड करतांना काहीतरी चुकले आहे.", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 13a1e3345..70683ef42 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Alamak!", "announcement.announcement": "Pengumuman", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} seminggu", "boost_modal.combo": "Anda boleh tekan {combo} untuk melangkauinya pada waktu lain", "bundle_column_error.body": "Terdapat kesilapan ketika memuatkan komponen ini.", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 94cbd5bcd..64c747aa1 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -51,7 +51,7 @@ "admin.dashboard.daily_retention": "Retentiegraad van gebruikers per dag, vanaf registratie", "admin.dashboard.monthly_retention": "Retentiegraad van gebruikers per maand, vanaf registratie", "admin.dashboard.retention.average": "Gemiddelde", - "admin.dashboard.retention.cohort": "Aanmeldingsmaand", + "admin.dashboard.retention.cohort": "Maand van registratie", "admin.dashboard.retention.cohort_size": "Nieuwe gebruikers", "alert.rate_limited.message": "Probeer het nog een keer na {retry_time, time, medium}.", "alert.rate_limited.title": "Beperkt te gebruiken", @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oeps!", "announcement.announcement": "Mededeling", "attachments_list.unprocessed": "(niet verwerkt)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", @@ -172,8 +173,8 @@ "empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, komt deze hier te staan.", "empty_column.domain_blocks": "Er zijn nog geen geblokkeerde domeinen.", "empty_column.explore_statuses": "Momenteel zijn er geen trends. Kom later terug!", - "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je er een aan jouw favorieten toevoegt, valt deze hier te zien.", - "empty_column.favourites": "Niemand heeft dit bericht nog aan diens favorieten toegevoegd. Wanneer iemand dit doet, valt dat hier te zien.", + "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je een bericht als favoriet markeert, valt deze hier te zien.", + "empty_column.favourites": "Niemand heeft dit bericht nog als favoriet gemarkeerd. Wanneer iemand dit doet, valt dat hier te zien.", "empty_column.follow_recommendations": "Het lijkt er op dat er geen aanbevelingen voor jou aangemaakt kunnen worden. Je kunt proberen te zoeken naar mensen die je wellicht kent, zoeken op hashtags, de lokale en globale tijdlijnen bekijken of de gebruikersgids doorbladeren.", "empty_column.follow_requests": "Jij hebt nog enkel volgverzoek ontvangen. Wanneer je er eentje ontvangt, valt dat hier te zien.", "empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Een van deze", "hashtag.column_settings.tag_mode.none": "Geen van deze", "hashtag.column_settings.tag_toggle": "Additionele tags aan deze kolom toevoegen", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Hashtag volgen", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hashtag ontvolgen", "home.column_settings.basic": "Algemeen", "home.column_settings.show_reblogs": "Boosts tonen", "home.column_settings.show_replies": "Reacties tonen", @@ -240,7 +241,7 @@ "keyboard_shortcuts.direct": "Directe berichten tonen", "keyboard_shortcuts.down": "Naar beneden in de lijst bewegen", "keyboard_shortcuts.enter": "Volledig bericht tonen", - "keyboard_shortcuts.favourite": "Aan jouw favorieten toevoegen", + "keyboard_shortcuts.favourite": "Als favoriet markeren", "keyboard_shortcuts.favourites": "Favorieten tonen", "keyboard_shortcuts.federated": "Globale tijdlijn tonen", "keyboard_shortcuts.heading": "Sneltoetsen", @@ -318,8 +319,8 @@ "navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.security": "Beveiliging", "notification.admin.report": "{name} heeft {target} geapporteerd", - "notification.admin.sign_up": "{name} heeft zich aangemeld", - "notification.favourite": "{name} voegde jouw bericht als favoriet toe", + "notification.admin.sign_up": "{name} heeft zich geregistreerd", + "notification.favourite": "{name} markeerde jouw bericht als favoriet", "notification.follow": "{name} volgt jou nu", "notification.follow_request": "{name} wil jou graag volgen", "notification.mention": "{name} vermeldde jou", @@ -331,7 +332,7 @@ "notifications.clear": "Meldingen verwijderen", "notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?", "notifications.column_settings.admin.report": "Nieuwe rapportages:", - "notifications.column_settings.admin.sign_up": "Nieuwe aanmeldingen:", + "notifications.column_settings.admin.sign_up": "Nieuwe registraties:", "notifications.column_settings.alert": "Desktopmeldingen", "notifications.column_settings.favourite": "Favorieten:", "notifications.column_settings.filter_bar.advanced": "Alle categorieën tonen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1a8904cd2..3f6a1747b 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -41,24 +41,25 @@ "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tut}}", "account.unblock": "Slutt å blokera @{name}", "account.unblock_domain": "Vis {domain}", - "account.unblock_short": "Opphev blokkering", + "account.unblock_short": "Avblokker", "account.unendorse": "Ikkje framhev på profil", "account.unfollow": "Slutt å fylgja", - "account.unmute": "Av-demp @{name}", + "account.unmute": "Opphev målbinding av @{name}", "account.unmute_notifications": "Vis varsel frå @{name}", - "account.unmute_short": "Opphev demping", + "account.unmute_short": "Opphev målbinding", "account_note.placeholder": "Klikk for å leggja til merknad", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Gjennomsnitt", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "Nye brukere", + "admin.dashboard.retention.cohort_size": "Nye brukarar", "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.", "alert.rate_limited.title": "Begrensa rate", "alert.unexpected.message": "Eit uventa problem oppstod.", "alert.unexpected.title": "Oi sann!", "announcement.announcement": "Kunngjering", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per veke", "boost_modal.combo": "Du kan trykkja {combo} for å hoppa over dette neste gong", "bundle_column_error.body": "Noko gjekk gale mens denne komponenten vart lasta ned.", @@ -70,7 +71,7 @@ "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", - "column.direct": "Direct messages", + "column.direct": "Direktemeldingar", "column.directory": "Sjå gjennom profilar", "column.domain_blocks": "Gøymde domene", "column.favourites": "Favorittar", @@ -92,10 +93,10 @@ "community.column_settings.local_only": "Berre lokalt", "community.column_settings.media_only": "Berre media", "community.column_settings.remote_only": "Berre eksternt", - "compose.language.change": "Change language", + "compose.language.change": "Byt språk", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Lær meir", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Innlegg på Mastodon er ikkje ende-til-ende-krypterte. Ikkje del eventuell sensitiv informasjon via Mastodon.", "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.", "compose_form.lock_disclaimer": "Kontoen din er ikkje {locked}. Kven som helst kan fylgja deg for å sjå innlegga dine som berre visast til fylgjarar.", "compose_form.lock_disclaimer.lock": "låst", @@ -108,7 +109,7 @@ "compose_form.poll.switch_to_single": "Endra avstemninga til tillate berre eitt val", "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Lagre endringar", "compose_form.sensitive.hide": "Merk medium som sensitivt", "compose_form.sensitive.marked": "Medium er markert som sensitivt", "compose_form.sensitive.unmarked": "Medium er ikkje merka som sensitivt", @@ -124,7 +125,7 @@ "confirmations.delete_list.confirm": "Slett", "confirmations.delete_list.message": "Er du sikker på at du vil sletta denne lista for alltid?", "confirmations.discard_edit_media.confirm": "Forkast", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.message": "Du har ulagra endringar i mediabeskrivinga eller førehandsvisinga. Vil du forkaste dei likevel?", "confirmations.domain_block.confirm": "Gøym heile domenet", "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil blokkera heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå det domenet i nokon fødererte tidsliner eller i varsla dine. Fylgjarane dine frå det domenet vert fjerna.", "confirmations.logout.confirm": "Logg ut", @@ -178,7 +179,7 @@ "empty_column.follow_requests": "Du har ingen følgjeførespurnadar ennå. Når du får ein, så vil den dukke opp her.", "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.", "empty_column.home": "Heime-tidslinja di er tom! Besøk {public} eller søk for å starte og å møte andre brukarar.", - "empty_column.home.suggestions": "Se noen forslag", + "empty_column.home.suggestions": "Sjå nokre forslag", "empty_column.list": "Det er ingenting i denne lista enno. Når medlemer av denne lista legg ut nye statusar, så dukkar dei opp her.", "empty_column.lists": "Du har ingen lister enno. Når du lagar ei, så dukkar ho opp her.", "empty_column.mutes": "Du har ikkje målbunde nokon brukarar enno.", @@ -190,14 +191,14 @@ "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla", "errors.unexpected_crash.report_issue": "Rapporter problem", - "explore.search_results": "Søkeresultater", + "explore.search_results": "Søkeresultat", "explore.suggested_follows": "For deg", "explore.title": "Utforsk", - "explore.trending_links": "Nyheter", + "explore.trending_links": "Nyheiter", "explore.trending_statuses": "Innlegg", - "explore.trending_tags": "Hashtags", + "explore.trending_tags": "Emneknaggar", "follow_recommendations.done": "Ferdig", - "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", + "follow_recommendations.heading": "Fylg folk du ønsker å sjå innlegg frå! Her er nokre forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Kva som helst av desse", "hashtag.column_settings.tag_mode.none": "Ikkje nokon av disse", "hashtag.column_settings.tag_toggle": "Inkluder ekstra emneknaggar for denne kolonna", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Fylg emneknagg", + "hashtag.total_volume": "Totalt volum siste {days, plural, one {dag} other {{days} dagar}}", + "hashtag.unfollow": "Slutt å fylgje emneknaggen", "home.column_settings.basic": "Enkelt", "home.column_settings.show_reblogs": "Vis framhevingar", "home.column_settings.show_replies": "Vis svar", @@ -270,8 +271,8 @@ "lightbox.expand": "Ekspander bildevisning boks", "lightbox.next": "Neste", "lightbox.previous": "Førre", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Vis profilen likevel", + "limited_account_hint.title": "Denne profilen har vorte skjult av moderatorane på tenaren din.", "lists.account.add": "Legg til i liste", "lists.account.remove": "Fjern frå liste", "lists.delete": "Slett liste", @@ -280,7 +281,7 @@ "lists.new.create": "Legg til liste", "lists.new.title_placeholder": "Ny listetittel", "lists.replies_policy.followed": "Enhver fulgt bruker", - "lists.replies_policy.list": "Medlemmer i listen", + "lists.replies_policy.list": "Medlem i lista", "lists.replies_policy.none": "Ikkje nokon", "lists.replies_policy.title": "Vis svar på:", "lists.search": "Søk gjennom folk du følgjer", @@ -298,7 +299,7 @@ "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", "navigation_bar.compose": "Lag eit nytt tut", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Direktemeldingar", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domene", "navigation_bar.edit_profile": "Rediger profil", @@ -317,7 +318,7 @@ "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", "navigation_bar.security": "Tryggleik", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} rapporterte {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} merkte statusen din som favoritt", "notification.follow": "{name} fylgde deg", @@ -327,10 +328,10 @@ "notification.poll": "Ei rundspørjing du har røysta i er ferdig", "notification.reblog": "{name} framheva statusen din", "notification.status": "{name} la nettopp ut", - "notification.update": "{name} edited a post", + "notification.update": "{name} redigerte eit innlegg", "notifications.clear": "Tøm varsel", "notifications.clear_confirmation": "Er du sikker på at du vil fjerna alle varsla dine for alltid?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Nye rapportar:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Skrivebordsvarsel", "notifications.column_settings.favourite": "Favorittar:", @@ -346,9 +347,9 @@ "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Spel av lyd", "notifications.column_settings.status": "Nye tuter:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Redigeringer:", + "notifications.column_settings.unread_notifications.category": "Uleste varsel", + "notifications.column_settings.unread_notifications.highlight": "Marker uleste varsel", + "notifications.column_settings.update": "Redigeringar:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Framhevingar", "notifications.filter.favourites": "Favorittar", @@ -372,15 +373,15 @@ "poll.total_votes": "{count, plural, one {# røyst} other {# røyster}}", "poll.vote": "Røyst", "poll.voted": "Du røysta på dette svaret", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# stemme} other {# stemmer}}", "poll_button.add_poll": "Start ei meiningsmåling", "poll_button.remove_poll": "Fjern røyst", "privacy.change": "Juster status-synlegheit", "privacy.direct.long": "Legg berre ut for nemnde brukarar", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Kun nemnde personar", "privacy.private.long": "Post kun til følgjarar", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Kun fylgjarar", + "privacy.public.long": "Synleg for alle", "privacy.public.short": "Offentleg", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", @@ -388,11 +389,11 @@ "regeneration_indicator.label": "Lastar…", "regeneration_indicator.sublabel": "Heimetidslinja di vert førebudd!", "relative_time.days": "{number}dg", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# dag} other {# dagar}} sidan", + "relative_time.full.hours": "{number, plural, one {# time} other {# timar}} sidan", + "relative_time.full.just_now": "nettopp nå", + "relative_time.full.minutes": "{number, plural, one {# minutt} other {# minutt}} sidan", + "relative_time.full.seconds": "{number, plural, one {# sekund} other {# sekund}} sidan", "relative_time.hours": "{number}t", "relative_time.just_now": "nå", "relative_time.minutes": "{number}min", @@ -400,46 +401,46 @@ "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", "report.block": "Blokker", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.block_explanation": "Du vil ikkje kunne sjå innlegga deira. Dei vil ikkje kunne sjå innlegga dine eller fylgje deg. Dei kan sjå at dei er blokkert.", + "report.categories.other": "Anna", "report.categories.spam": "Søppelpost", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", + "report.categories.violation": "Innhaldet bryt ei eller fleire regler for tenaren", + "report.category.subtitle": "Vel det som passar best", + "report.category.title": "Fortel oss kva som skjer med denne {type}", "report.category.title_account": "profil", "report.category.title_status": "innlegg", - "report.close": "Utført", - "report.comment.title": "Is there anything else you think we should know?", + "report.close": "Ferdig", + "report.comment.title": "Er det noko anna du meiner me bør vite?", "report.forward": "Vidaresend til {target}", "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?", - "report.mute": "Demp", + "report.mute": "Målbind", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Neste", "report.placeholder": "Tilleggskommentarar", - "report.reasons.dislike": "Jeg liker det ikke", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "Det er spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.reasons.dislike": "Eg likar det ikkje", + "report.reasons.dislike_description": "Det er ikkje noko du ønsker å sjå", + "report.reasons.other": "Det er noko anna", + "report.reasons.other_description": "Problemet passar ikkje inn i dei andre kategoriane", + "report.reasons.spam": "Det er søppelpost", + "report.reasons.spam_description": "Skadelege lenker, falskt engasjement og gjentakande svar", + "report.reasons.violation": "Det bryt tenaren sine reglar", + "report.reasons.violation_description": "Du veit at den bryt spesifikke reglar", "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", + "report.rules.title": "Kva reglar vert brotne?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Send inn", "report.target": "Rapporterer {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.thanks.title": "Vil du ikkje sjå dette?", + "report.thanks.title_actionable": "Takk for at du rapporterer, me skal sjå på dette.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", + "report_notification.attached_statuses": "{count, plural, one {{count} innlegg} other {{count} innlegg}} lagt ved", + "report_notification.categories.other": "Anna", + "report_notification.categories.spam": "Søppelpost", + "report_notification.categories.violation": "Regelbrot", "report_notification.open": "Open report", "search.placeholder": "Søk", "search_popout.search_format": "Avansert søkeformat", @@ -451,7 +452,7 @@ "search_results.accounts": "Folk", "search_results.all": "All", "search_results.hashtags": "Emneknaggar", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Kunne ikkje finne noko for desse søkeorda", "search_results.statuses": "Tut", "search_results.statuses_fts_disabled": "På denne Matsodon-tenaren kan du ikkje søkja på tut etter innhaldet deira.", "search_results.total": "{count, number} {count, plural, one {treff} other {treff}}", @@ -465,15 +466,15 @@ "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", "status.direct": "Send melding til @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Rediger", + "status.edited": "Redigert {date}", + "status.edited_x_times": "Redigert {count, plural, one {{count} gong} other {{count} gonger}}", "status.embed": "Bygg inn", "status.favourite": "Favoritt", "status.filtered": "Filtrert", - "status.hide": "Hide toot", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.hide": "Gøym innlegg", + "status.history.created": "{name} oppretta {date}", + "status.history.edited": "{name} redigerte {date}", "status.load_more": "Last inn meir", "status.media_hidden": "Medium gøymd", "status.mention": "Nemn @{name}", @@ -495,7 +496,7 @@ "status.report": "Rapporter @{name}", "status.sensitive_warning": "Sensitivt innhald", "status.share": "Del", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Vis likevel", "status.show_less": "Vis mindre", "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis meir", @@ -532,7 +533,7 @@ "upload_error.poll": "Filopplasting ikkje tillate med meiningsmålingar.", "upload_form.audio_description": "Grei ut for folk med nedsett høyrsel", "upload_form.description": "Skildr for synshemja", - "upload_form.description_missing": "Ingen beskrivelse lagt til", + "upload_form.description_missing": "Inga beskriving er lagt til", "upload_form.edit": "Rediger", "upload_form.thumbnail": "Bytt miniatyrbilete", "upload_form.undo": "Slett", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 829be51a5..b0b7f76bc 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oi!", "announcement.announcement": "Kunngjøring", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per uke", "boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang", "bundle_column_error.body": "Noe gikk galt mens denne komponenten lastet.", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index b065b4e8f..d9d3b20a1 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ops !", "announcement.announcement": "Anóncia", "attachments_list.unprocessed": "(pas tractat)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven", "bundle_column_error.body": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 99fdcfd45..bc5e9d91c 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index bc8799831..5ba83f01f 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "O nie!", "announcement.announcement": "Ogłoszenie", "attachments_list.unprocessed": "(nieprzetworzone)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Dowolne", "hashtag.column_settings.tag_mode.none": "Żadne", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Obserwuj hasztag", "hashtag.total_volume": "Całkowity wolumen w ciągu {days, plural, one {ostatniego dnia} other {ostatnich {days} dni}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Przestań obserwować hashtag", "home.column_settings.basic": "Podstawowe", "home.column_settings.show_reblogs": "Pokazuj podbicia", "home.column_settings.show_replies": "Pokazuj odpowiedzi", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 0073ff5f1..3fd4c822e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Eita!", "announcement.announcement": "Comunicados", "attachments_list.unprocessed": "(não processado)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", "bundle_column_error.body": "Erro ao carregar este componente.", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 643ef1c6e..0764920e8 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Bolas!", "announcement.announcement": "Anúncio", "attachments_list.unprocessed": "(não processado)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Qualquer destes", "hashtag.column_settings.tag_mode.none": "Nenhum destes", "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionais para esta coluna", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir hashtag", "hashtag.total_volume": "Volume total {days, plural, one {no último dia} other {nos últimos {days} dias}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Parar de seguir hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index a3188f553..e60ce2220 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Anunț", "attachments_list.unprocessed": "(neprocesate)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} pe săptămână", "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", "bundle_column_error.body": "A apărut o eroare la încărcarea acestui element.", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index ca9a2cceb..c0bfb8b79 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Упс!", "announcement.announcement": "Объявление", "attachments_list.unprocessed": "(не обработан)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", "bundle_column_error.body": "Что-то пошло не так при загрузке этого компонента.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Любой из списка", "hashtag.column_settings.tag_mode.none": "Ни один из списка", "hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Подписаться на новые посты", "hashtag.total_volume": "Общий объем за {days, plural, =1 {последний день} one {последний {days} день} few {последних {days} дня} many {последних {days} дней} other {последних {days} дней}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Отписаться", "home.column_settings.basic": "Основные", "home.column_settings.show_reblogs": "Показывать продвижения", "home.column_settings.show_replies": "Показывать ответы", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index ecbdf816c..3a5faf272 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "अरे !", "announcement.announcement": "उद्घोषणा", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताहे", "boost_modal.combo": "{combo} अत्र स्प्रष्टुं शक्यते, त्यक्तुमेतमन्यस्मिन् समये", "bundle_column_error.body": "विषयस्याऽऽरोपणे कश्चिद्दोषो जातः", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index aaecfd8e1..93a7ea769 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oh!", "announcement.announcement": "Annùntziu", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} a sa chida", "boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit", "bundle_column_error.body": "Faddina in su carrigamentu de custu cumponente.", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index e50ea9135..18342b7ce 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "අපොයි!", "announcement.announcement": "නිවේදනය", "attachments_list.unprocessed": "(සැකසුම් නොකළ)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "සතියකට {count}", "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට ඔබට {combo} එබිය හැක", "bundle_column_error.body": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 3454fe7d2..aff5960d9 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Oboznámenie", "attachments_list.unprocessed": "(nespracované)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} týždenne", "boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie", "bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Hociktorý z týchto", "hashtag.column_settings.tag_mode.none": "Žiaden z týchto", "hashtag.column_settings.tag_toggle": "Vlož dodatočné haštagy pre tento stĺpec", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Nasleduj haštag", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Nesleduj haštag", "home.column_settings.basic": "Základné", "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté", "home.column_settings.show_replies": "Ukáž odpovede", @@ -401,7 +402,7 @@ "reply_indicator.cancel": "Zrušiť", "report.block": "Blokuj", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Ostatné", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", @@ -437,7 +438,7 @@ "report.unfollow": "Nesleduj @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.categories.other": "Ostatné", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", @@ -471,7 +472,7 @@ "status.embed": "Vložiť", "status.favourite": "Páči sa mi", "status.filtered": "Filtrované", - "status.hide": "Hide toot", + "status.hide": "Skry príspevok", "status.history.created": "{name} vytvoril/a {date}", "status.history.edited": "{name} upravil/a {date}", "status.load_more": "Ukáž viac", @@ -495,7 +496,7 @@ "status.report": "Nahlás @{name}", "status.sensitive_warning": "Chúlostivý obsah", "status.share": "Zdieľaj", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Ukáž aj tak", "status.show_less": "Zobraz menej", "status.show_less_all": "Všetkým ukáž menej", "status.show_more": "Ukáž viac", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 733614f3e..af736ed59 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Uups!", "announcement.announcement": "Objava", "attachments_list.unprocessed": "(neobdelano)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", "bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Karkoli od naštetega", "hashtag.column_settings.tag_mode.none": "Nič od naštetega", "hashtag.column_settings.tag_toggle": "Za ta stolpec vključi dodatne oznake", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Sledi ključniku", "hashtag.total_volume": "Skupen obseg v {days, plural, one {zadnjem {day} dnevu} two {zadnjih {days} dneh} few {zadnjih {days} dneh} other {zadnjih {days} dneh}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Nehaj slediti ključniku", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži izpostavitve", "home.column_settings.show_replies": "Pokaži odgovore", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 8bc440503..4f43cec0b 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hëm!", "announcement.announcement": "Lajmërim", "attachments_list.unprocessed": "(e papërpunuar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", "bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Cilindo prej këtyre", "hashtag.column_settings.tag_mode.none": "Asnjë prej këtyre", "hashtag.column_settings.tag_toggle": "Përfshi etiketa shtesë për këtë shtyllë", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Ndiqe hashtag-un", "hashtag.total_volume": "Vëllim gjithsej {days, plural, një {day} other {{days} ditët}} e fundit", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hiqe ndjekjen e hashtag-ut", "home.column_settings.basic": "Bazë", "home.column_settings.show_reblogs": "Shfaq përforcime", "home.column_settings.show_replies": "Shfaq përgjigje", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 131af97e1..2f35ba2c4 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Možete pritisnuti {combo} da preskočite ovo sledeći put", "bundle_column_error.body": "Nešto je pošlo po zlu prilikom učitavanja ove komponente.", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index a2409e957..d9d67edf0 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Упс!", "announcement.announcement": "Најава", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} недељно", "boost_modal.combo": "Можете притиснути {combo} да прескочите ово следећи пут", "bundle_column_error.body": "Нешто је пошло по злу приликом учитавања ове компоненте.", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index c0a69b24b..9e3b9cf37 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hoppsan!", "announcement.announcement": "Meddelande", "attachments_list.unprocessed": "(obearbetad)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per vecka", "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", "bundle_column_error.body": "Något gick fel medan denna komponent laddades.", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 99fdcfd45..bc5e9d91c 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index cc7241bad..021315b33 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "அச்சச்சோ!", "announcement.announcement": "அறிவிப்பு", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}", "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்", "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 17b0e1ed1..77232ff5f 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index bbe99b4a6..be49846cb 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "అయ్యో!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "మీరు తదుపరిసారి దీనిని దాటవేయడానికి {combo} నొక్కవచ్చు", "bundle_column_error.body": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 0bff3caab..e901b9647 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "อุปส์!", "announcement.announcement": "ประกาศ", "attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", "bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "ใดก็ตามนี้", "hashtag.column_settings.tag_mode.none": "ไม่ใช่ทั้งหมดนี้", "hashtag.column_settings.tag_toggle": "รวมแท็กเพิ่มเติมสำหรับคอลัมน์นี้", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "ติดตามแฮชแท็ก", + "hashtag.total_volume": "ปริมาณรวมใน {days, plural, other {{days} วัน}}ที่ผ่านมา", + "hashtag.unfollow": "เลิกติดตามแฮชแท็ก", "home.column_settings.basic": "พื้นฐาน", "home.column_settings.show_reblogs": "แสดงการดัน", "home.column_settings.show_replies": "แสดงการตอบกลับ", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "ผู้ติดตาม", "timeline_hint.resources.follows": "การติดตาม", "timeline_hint.resources.statuses": "โพสต์ที่เก่ากว่า", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, other {{counter} คน}}ใน {days, plural, other {{days} วัน}}ที่ผ่านมา", "trends.trending_now": "กำลังนิยม", "ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Mastodon", "units.short.billion": "{count} พันล้าน", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 3948bde5e..b69153a62 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hay aksi!", "announcement.announcement": "Duyuru", "attachments_list.unprocessed": "(işlenmemiş)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", "bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Herhangi biri", "hashtag.column_settings.tag_mode.none": "Bunların hiçbiri", "hashtag.column_settings.tag_toggle": "Bu sütundaki ek etiketleri içer", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Etiketi takip et", "hashtag.total_volume": "Son {days, plural, one {gündeki} other {{days} gündeki}} toplam hacim", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Etiketi takibi bırak", "home.column_settings.basic": "Temel", "home.column_settings.show_reblogs": "Boostları göster", "home.column_settings.show_replies": "Yanıtları göster", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index c9a48d37c..9e72174d1 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ой!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 99fdcfd45..bc5e9d91c 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 727b0b994..e26a73f62 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ой!", "announcement.announcement": "Оголошення", "attachments_list.unprocessed": "(не оброблено)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", "bundle_column_error.body": "Щось пішло не так під час завантаження цього компоненту.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Який-небудь зі списку", "hashtag.column_settings.tag_mode.none": "Жоден зі списку", "hashtag.column_settings.tag_toggle": "Додати додаткові теґи до цього стовпчика", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Стежити за хештегом", "hashtag.total_volume": "Загальний обсяг за останні(й) {days, plural, one {день} few {{days} дні} other {{days} днів}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Не стежити за хештегом", "home.column_settings.basic": "Основні", "home.column_settings.show_reblogs": "Показувати поширення", "home.column_settings.show_replies": "Показувати відповіді", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index b3e3fd771..be9b8b80d 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ا رے!", "announcement.announcement": "اعلان", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} فی ہفتہ", "boost_modal.combo": "آئیندہ یہ نہ دیکھنے کیلئے آپ {combo} دبا سکتے ہیں", "bundle_column_error.body": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 4cdb1e53d..016fa6b76 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ốiii!", "announcement.announcement": "Có gì mới?", "attachments_list.unprocessed": "(chưa xử lí)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Một phần", "hashtag.column_settings.tag_mode.none": "Không chọn", "hashtag.column_settings.tag_toggle": "Bao gồm thêm hashtag cho cột này", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Theo dõi hashtag", "hashtag.total_volume": "Tổng số lần sử dụng {days, plural, other {{days} ngày}} qua", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Ngưng theo dõi hashtag", "home.column_settings.basic": "Tùy chỉnh", "home.column_settings.show_reblogs": "Hiện những lượt đăng lại", "home.column_settings.show_replies": "Hiện những tút dạng trả lời", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 898cc22a9..e96b64cc4 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} ⵙ ⵉⵎⴰⵍⴰⵙⵙ", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 334b93034..f250aa1b7 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未处理)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", "bundle_column_error.body": "载入这个组件时发生了错误。", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "无一", "hashtag.column_settings.tag_toggle": "在此栏加入额外的标签", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "关注哈希标签", "hashtag.total_volume": "在过去的{days, plural,one {day}other {{days}days}}的总数量", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "取消关注哈希标签", "home.column_settings.basic": "基本设置", "home.column_settings.show_reblogs": "显示转嘟", "home.column_settings.show_replies": "显示回复", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "关注者", "timeline_hint.resources.follows": "关注", "timeline_hint.resources.statuses": "更早的嘟文", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "过去{day}天有{counter}人讨论", "trends.trending_now": "现在流行", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", "units.short.billion": "{count} B", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index e3c65cdab..f17df83c4 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "噢!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "如你想在下次路過這顯示,請按{combo},", "bundle_column_error.body": "加載本組件出錯。", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 99814b30d..a18e92066 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未經處理)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", "bundle_column_error.body": "載入此元件時發生錯誤。", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "全不", "hashtag.column_settings.tag_toggle": "將額外標籤加入到這個欄位", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "追蹤主題標籤", "hashtag.total_volume": "過去 {days, plural, one {日} other {{days} 日}} 之總量", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "取消追蹤主題標籤", "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示轉嘟", "home.column_settings.show_replies": "顯示回覆", diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml index a24862a70..d3c013dc0 100644 --- a/config/locales/activerecord.de.yml +++ b/config/locales/activerecord.de.yml @@ -38,3 +38,14 @@ de: email: blocked: verwendet einen nicht erlaubten E-Mail-Anbieter unreachable: scheint nicht zu existieren + role_id: + elevated: Kann nicht höher als Ihre aktuelle Rolle sein + user_role: + attributes: + permissions_as_keys: + dangerous: enthalte Berechtigungen, die für die Basisrolle nicht sicher sind + elevated: kann keine Berechtigungen enthalten, die deine aktuelle Rolle nicht besitzt + own_role: kann nicht mit deiner aktuellen Rolle geändert werden + position: + elevated: kann nicht höher sein als deine aktuelle Rolle + own_role: kann nicht mit deiner aktuellen Rolle geändert werden diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml index 37b9b05df..c7283aafd 100644 --- a/config/locales/activerecord.es-MX.yml +++ b/config/locales/activerecord.es-MX.yml @@ -45,5 +45,7 @@ es-MX: permissions_as_keys: dangerous: incluir permisos que no son seguros para el rol base elevated: no se pueden incluir permisos que tu rol actual no posea + own_role: no se puede cambiar con tu rol actual position: elevated: no puede ser mayor que tu rol actual + own_role: no se puede cambiar con tu rol actual diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml index 40dd81812..f9798cabe 100644 --- a/config/locales/activerecord.fi.yml +++ b/config/locales/activerecord.fi.yml @@ -21,6 +21,14 @@ fi: username: invalid: saa sisältää vain kirjaimia, numeroita ja alaviivoja reserved: on varattu + admin/webhook: + attributes: + url: + invalid: ei ole kelvollinen URL + doorkeeper/application: + attributes: + website: + invalid: ei ole kelvollinen URL status: attributes: reblog: @@ -30,3 +38,14 @@ fi: email: blocked: käyttää kiellettyä sähköpostipalvelun tarjoajaa unreachable: ei näytä olevan olemassa + role_id: + elevated: ei voi olla korkeampi kuin nykyinen roolisi + user_role: + attributes: + permissions_as_keys: + dangerous: sisältää oikeudet, jotka eivät ole turvallisia perusroolille + elevated: ei voi sisältää oikeuksia, joita nykyisellä roolillasi ei ole + own_role: ei voi muuttaa nykyisellä roolillasi + position: + elevated: ei voi olla korkeampi kuin nykyinen roolisi + own_role: ei voi muuttaa nykyisellä roolillasi diff --git a/config/locales/activerecord.gd.yml b/config/locales/activerecord.gd.yml index 2920b561e..b210144ef 100644 --- a/config/locales/activerecord.gd.yml +++ b/config/locales/activerecord.gd.yml @@ -21,6 +21,14 @@ gd: username: invalid: "– chan fhaod ach litrichean gun sràcan, àireamhan ’s fo-loidhnichean a bhith ’na bhroinn" reserved: "– tha e glèidhte" + admin/webhook: + attributes: + url: + invalid: "– chan eil seo ’na URL dligheach" + doorkeeper/application: + attributes: + website: + invalid: "– chan eil seo ’na URL dligheach" status: attributes: reblog: @@ -30,3 +38,14 @@ gd: email: blocked: "– tha seo a’ chleachdadh solaraiche puist-d nach eil ceadaichte" unreachable: "– tha coltas nach eil seo ann" + role_id: + elevated: "– chan fhaod seo a bhith nas àirde na an dreuchd a th’ agad an-dràsta" + user_role: + attributes: + permissions_as_keys: + dangerous: gabh a-staigh na ceadan nach eil sàbhailte dhan bhun-dreuchd + elevated: chan urrainn dhut ceadan a ghabhail a-staigh nach eil aig an dreuchd a th’ agad an-dràsta + own_role: cha ghabh seo atharrachadh leis an dreuchd a th’ agad an-dràsta + position: + elevated: chan fhaod seo a bhith nas àirde na an dreuchd a th’ agad an-dràsta + own_role: cha ghabh seo atharrachadh leis an dreuchd a th’ agad an-dràsta diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index 52b1b37fd..06d63da7a 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -38,3 +38,9 @@ ja: email: blocked: は禁止されているメールプロバイダを使用しています unreachable: は存在しないようです + user_role: + attributes: + permissions_as_keys: + own_role: 現在と同じロールには変更できません + position: + own_role: 現在と同じロールには変更できません diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml index ee8d9a8d8..3eec2950c 100644 --- a/config/locales/activerecord.ku.yml +++ b/config/locales/activerecord.ku.yml @@ -45,5 +45,7 @@ ku: permissions_as_keys: dangerous: mafdayînên ku ji bo rola bingehîn ne ewle ne tê de hene elevated: di rola te ya heyî de nabe mafdayîn tê de hebin + own_role: bi rola te ya heyî nayê guhertin position: elevated: nabe ku ji rola te ya heyî bilindtir be + own_role: bi rola te ya heyî nayê guhertin diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml index f23f9ae6c..ce37d1856 100644 --- a/config/locales/activerecord.nn.yml +++ b/config/locales/activerecord.nn.yml @@ -6,11 +6,12 @@ nn: expires_at: Frist options: Val user: - email: E-mail address + agreement: Serviceavtale + email: Epostadresse locale: Område password: Passord user/account: - username: Brukernavn + username: Brukarnamn user/invite_request: text: Grunn errors: @@ -18,9 +19,32 @@ nn: account: attributes: username: - invalid: bare bokstaver, tall og understreker + invalid: må innehalde kun bokstavar, tal og understrekar reserved: er reservert + admin/webhook: + attributes: + url: + invalid: er ikkje ein gyldig URL + doorkeeper/application: + attributes: + website: + invalid: er ikkje ein gyldig URL status: attributes: reblog: - taken: av status eksisterer allerede + taken: av innlegg eksisterer allereie + user: + attributes: + email: + unreachable: ser ikkje ut til å eksistere + role_id: + elevated: kan ikkje vere høgare enn di noverande rolle + user_role: + attributes: + permissions_as_keys: + dangerous: inkluder tillatingar som ikkje er trygge for basisrolla + elevated: kan ikkje inkludere rettigheiter di noverande rolle ikkje innehar + own_role: kan ikkje endrast med di noverande rolle + position: + elevated: kan ikkje vere høgare enn di noverande rolle + own_role: kan ikkje endrast med di noverande rolle diff --git a/config/locales/de.yml b/config/locales/de.yml index 0c8321295..0ce9c3254 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -103,11 +103,17 @@ de: avatar: Profilbild by_domain: Domain change_email: + changed_msg: E-Mail erfolgreich geändert! current_email: Aktuelle E-Mail-Adresse label: E-Mail-Adresse ändern new_email: Neue E-Mail-Adresse submit: E-Mail-Adresse ändern title: E-Mail-Adresse für %{username} ändern + change_role: + changed_msg: Rolle erfolgreich geändert! + label: Rolle ändern + no_role: Keine Rolle + title: Rolle für %{username} ändern confirm: Bestätigen confirmed: Bestätigt confirming: Bestätigung @@ -151,6 +157,7 @@ de: active: Aktiv all: Alle pending: In Warteschlange + silenced: Limitiert suspended: Gesperrt title: Moderation moderation_notes: Moderationsnotizen @@ -158,6 +165,7 @@ de: most_recent_ip: Letzte IP-Adresse no_account_selected: Keine Konten wurden geändert, da keine ausgewählt wurden no_limits_imposed: Keine Beschränkungen + no_role_assigned: Keine Rolle zugewiesen not_subscribed: Nicht abonniert pending: In Warteschlange perform_full_suspension: Verbannen @@ -184,6 +192,7 @@ de: reset: Zurücksetzen reset_password: Passwort zurücksetzen resubscribe: Wieder abonnieren + role: Rolle search: Suche search_same_email_domain: Andere Benutzer mit der gleichen E-Mail-Domain search_same_ip: Andere Benutzer mit derselben IP @@ -640,6 +649,67 @@ de: unresolved: Ungelöst updated_at: Aktualisiert view_profile: Zeige Profil + roles: + add_new: Rolle hinzufügen + assigned_users: + one: "%{count} Benutzer" + other: "%{count} Benutzer" + categories: + administration: Administration + devops: DevOps + invites: Einladungen + moderation: Moderation + special: Spezial + delete: Löschen + description_html: Mit Benutzerrollenkönnen Sie die Funktionen und Bereiche von Mastodon anpassen, auf die Ihre Benutzer zugreifen können. + edit: "'%{name}' Rolle bearbeiten" + everyone: Standardberechtigungen + everyone_full_description_html: Das ist die -Basis-Rolle die jeden Benutzer betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon. + permissions_count: + one: "%{count} Berechtigung" + other: "%{count} Berechtigungen" + privileges: + administrator: Administrator + administrator_description: Benutzer mit dieser Berechtigung werden jede Berechtigung umgehen + delete_user_data: Benutzerdaten löschen + delete_user_data_description: Erlaubt Benutzern, die Daten anderer Benutzer ohne Verzögerung zu löschen + invite_users: Benutzer einladen + invite_users_description: Erlaubt Benutzern neue Leute zum Server einzuladen + manage_announcements: Ankündigungen verwalten + manage_announcements_description: Erlaubt Benutzern Ankündigungen auf dem Server zu verwalten + manage_appeals: Anträge verwalten + manage_appeals_description: Erlaubt es Benutzer Anträge gegen Moderationsaktionen zu überprüfen + manage_blocks: Geblocktes verwalten + manage_blocks_description: Erlaubt Benutzern E-Mail-Anbieter und IP-Adressen zu blockieren + manage_custom_emojis: Benutzerdefinierte Emojis verwalten + manage_custom_emojis_description: Erlaubt Benutzern benutzerdefinierte Emojis auf dem Server zu verwalten + manage_federation: Föderation verwalten + manage_federation_description: Erlaubt Benutzern, Föderation mit anderen Domänen zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren + manage_invites: Einladungen verwalten + manage_invites_description: Erlaubt Benutzern Einladungslinks zu durchsuchen und zu deaktivieren + manage_reports: Meldungen verwalten + manage_reports_description: Erlaubt Benutzern Meldungen zu überprüfen und Moderationsaktionen gegen sie durchzuführen + manage_roles: Rollen verwalten + manage_roles_description: Erlaubt Benutzern Rollen unter ihren Rollen zu verwalten und zuzuweisen + manage_rules: Regeln verwalten + manage_rules_description: Erlaubt Benutzern Serverregeln zu ändern + manage_settings: Einstellungen verwalten + manage_settings_description: Erlaubt Benutzern Site-Einstellungen zu ändern + manage_taxonomies: Taxonomien verwalten + manage_taxonomies_description: Ermöglicht Benutzern die Überprüfung angesagter Inhalte und das Aktualisieren der Hashtag-Einstellungen + manage_user_access: Benutzerzugriff verwalten + manage_user_access_description: Erlaubt Benutzern die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen + manage_users: Benutzer verwalten + manage_users_description: Erlaubt Benutzern die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen + manage_webhooks: Webhooks verwalten + manage_webhooks_description: Erlaubt Benutzern Webhooks für administrative Ereignisse einzurichten + view_audit_log: Audit-Log anzeigen + view_audit_log_description: Erlaubt Benutzern den Verlauf von administrativen Aktionen auf dem Server zu sehen + view_dashboard: Dashboard anzeigen + view_dashboard_description: Erlaubt Benutzern den Zugriff auf das Dashboard und verschiedene Metriken + view_devops: DevOps + view_devops_description: Erlaubt Benutzern auf Sidekiq und pgHero Dashboards zuzugreifen + title: Rollen rules: add_new: Regel hinzufügen delete: Löschen @@ -1109,14 +1179,24 @@ de: public: Öffentliche Zeitleisten thread: Gespräche edit: + add_keyword: Stichwort hinzufügen + keywords: Stichwörter title: Filter bearbeiten errors: + deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie auf mehr als ein Filterschlüsselwort angewendet werden. Verwenden Sie eine neuere Anwendung oder die Web-Schnittstelle. invalid_context: Ungültiger oder fehlender Kontext übergeben index: + contexts: Filter in %{contexts} delete: Löschen empty: Du hast keine Filter. + expires_in: Läuft ab in %{distance} + expires_on: Läuft am %{date} ab + keywords: + one: "%{count} Stichwort" + other: "%{count} Stichwörter" title: Filter new: + save: Neuen Filter speichern title: Neuen Filter hinzufügen footer: developers: Entwickler @@ -1235,6 +1315,8 @@ de: copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier waren deine letzten Notizen zu diesem Benutzer:' notification_mailer: admin: + report: + subject: "%{name} hat eine Meldung eingereicht" sign_up: subject: "%{name} registrierte sich" digest: diff --git a/config/locales/devise.en-GB.yml b/config/locales/devise.en-GB.yml new file mode 100644 index 000000000..ef03d1810 --- /dev/null +++ b/config/locales/devise.en-GB.yml @@ -0,0 +1 @@ +en-GB: diff --git a/config/locales/devise.ku.yml b/config/locales/devise.ku.yml index 18187a156..d5d0105ef 100644 --- a/config/locales/devise.ku.yml +++ b/config/locales/devise.ku.yml @@ -29,13 +29,13 @@ ku: title: Navnîşana e-nameyê piştrast bike email_changed: explanation: 'Navnîşana e-nameyê ajimêra te hate guhertin bo:' - extra: Heke te ajimêra xwe ne guhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî. + extra: Ku te ajimêra xwe neguhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî. subject: 'Mastodon: E-name hate guhertin' title: Navnîşana e-nameya nû password_change: explanation: Borînpeyva ajimêra te hate guhertin. - extra: Heke te ajimêra xwe ne guhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî. - subject: 'Mastodon: pêborîn hate guhertin' + extra: Ku te ajimêra xwe neguhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî. + subject: 'Mastodon: Borînpeyv hate guhertin' title: Borînpeyv hate guhertin reconfirmation_instructions: explanation: Navnîşana nû piştrast bike da ku tu e-nameya xwe biguherînî. diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml index 2cbbee6cf..477c7d41f 100644 --- a/config/locales/devise.nl.yml +++ b/config/locales/devise.nl.yml @@ -51,7 +51,7 @@ nl: subject: 'Mastodon: Tweestapsverificatie uitgeschakeld' title: Tweestapsverificatie uitgeschakeld two_factor_enabled: - explanation: Tweestapsverificatie voor jouw account is ingeschakeld. Om te kunnen aanmelden is een door een tweestapsverificatie-app genereerde toegangscode nodig. + explanation: Tweestapsverificatie voor jouw account is ingeschakeld. Om te kunnen inloggen is een door een tweestapsverificatie-app genereerde toegangscode nodig. subject: 'Mastodon: Tweestapsverificatie ingeschakeld' title: Tweestapsverificatie ingeschakeld two_factor_recovery_codes_changed: diff --git a/config/locales/devise.nn.yml b/config/locales/devise.nn.yml index 88d8458f7..0318e7ea9 100644 --- a/config/locales/devise.nn.yml +++ b/config/locales/devise.nn.yml @@ -41,7 +41,7 @@ nn: subject: 'Mastodon: Stadfest e-post for %{instance}' title: Stadfest e-postadresse reset_password_instructions: - action: Endr passord + action: Endre passord explanation: Du har bedt om eit nytt passord til kontoen din. extra: Om du ikkje bad om dette, ignorer denne e-posten. Passordet ditt vert ikkje endra før du går inn på lenkja ovanfor og lagar eit nytt. subject: 'Mastodon: Instuksjonar for å endra passord' @@ -63,51 +63,51 @@ nn: webauthn_credential: added: explanation: Følgende sikkerhetsnøkkel har blitt lagt til i kontoen din - subject: 'Mastodon: Ny sikkerhetsnøkkel' - title: En ny sikkerhetsnøkkel har blitt lagt til + subject: 'Mastodon: Ny sikkerheitsnøkkel' + title: Ein ny sikkerheitsnøkkel har blitt lagt til deleted: - explanation: Følgende sikkerhetsnøkkel har blitt slettet fra kontoen din - subject: 'Mastodon: Sikkerhetsnøkkel slettet' - title: En av sikkerhetsnøklene dine har blitt slettet + explanation: Den følgande sikkerheitsnøkkelen har blitt sletta frå kontoen din + subject: 'Mastodon: Sikkerheitsnøkkel sletta' + title: Ein av sikkerheitsnøklane dine har blitt sletta webauthn_disabled: - subject: 'Mastodon: Autentisering med sikkerhetsnøkler ble skrudd av' - title: Sikkerhetsnøkler deaktivert + subject: 'Mastodon: Autentisering med sikkerheitsnøklar vart skrudd av' + title: Sikkerheitsnøklar deaktivert webauthn_enabled: - subject: 'Mastodon: Sikkerhetsnøkkelsautentisering ble skrudd på' - title: Sikkerhetsnøkler aktivert + subject: 'Mastodon: Sikkerheitsnøkkelsautentisering vart skrudd på' + title: Sikkerheitsnøklar aktivert omniauth_callbacks: - failure: Du kunne ikkje verte autentisert frå %{kind} av di "%{reason}". + failure: Kunne ikkje autentisere deg frå %{kind} fordi "%{reason}". success: Autentisert frå %{kind}-konto. passwords: - no_token: Du har ikkje tilgang til denne sida utan ha gått via ein e-post som gjeld å nullstille passordet. Dersom det er kva du har gjort, dobbelsjekk at du har kopiert heile URLen. - send_instructions: Om vi har e-postadressa di i databasen vår, får du ein e-post med lenke til gjenopprette passordet om nokre få minutt. Sjekk søppelpostmappa di om du ikkje fekk denne e-posten. - send_paranoid_instructions: Om vi har e-postadressa di i databasen vår, får du ei lenkje til å endra passordet om nokre få minutt. Ver venleg og sjekk søppelpostmappa om du ikkje fekk denne e-posten. + no_token: Du har ikkje tilgang til denne sida utan ha gått via ein e-post som gjeld å nullstille passordet. Dersom det var det du gjorde, dobbelsjekk at du har kopiert heile URLen. + send_instructions: Om me har epostadressa di i databasen vår, får du ein epost med ei lenke til å gjenopprette passordet om nokre få minutt. Sjekk søppelpostmappa di om du ikkje fekk denne eposten. + send_paranoid_instructions: Om me har epostadressa di i databasen vår, får du ei lenke til å endra passordet om nokre få minutt. Ver venleg å sjekke søppelpostmappa om du ikkje fekk denne eposten. updated: Passordet ditt er endra. No er du logga inn. updated_not_active: Passordet ditt er endra. registrations: - destroyed: Ha det! Kontoen din er sletta. Vi vonar å sjå deg igjen snart. + destroyed: Ha det! Kontoen din er sletta. Me vonar å sjå deg igjen snart. signed_up: Velkomen! No er du registrert. - signed_up_but_inactive: Du har registrert deg inn, men vi kunne ikkje logga deg inn fordi kontoen din er ikkje aktivert enno. - signed_up_but_locked: Du har registrert deg inn, men vi kunne ikkje logga deg inn fordi kontoen din er låst. - signed_up_but_pending: Ei melding med ei stadfestingslenkje er vorten send til e-postadressa di. Når du klikkar på lenkja skal vi sjå gjennom søknaden din. Du får ei melding om han vert godkjend. - signed_up_but_unconfirmed: Ei melding med ei lenke for å stadfeste kontoen har vorte sendt e-postadressa di. Klikk på lenka for å aktivere kontoen. Sjekk søppelpostmappa dersom du ikkje har fått e-posten. - update_needs_confirmation: Du har oppdatert kontoen din, men vi må stadfeste den nye e-postadressa. Sjekk innboksen og følg lenka for å stadfeste adressa di. Sjekk søppelpostmappa dersom du ikkje har fått den e-posten. + signed_up_but_inactive: Du har registrert deg, men me kunne ikkje logga deg inn fordi kontoen din er ikkje aktivert enno. + signed_up_but_locked: Du har registrert deg, men me kunne ikkje logga deg inn fordi kontoen din er låst. + signed_up_but_pending: Ei melding med ei stadfestingslenke har vorte sendt til epostadressa di. Når du klikkar på lenka skal me sjå gjennom søknaden din. Du får ei melding om den vert godkjend. + signed_up_but_unconfirmed: Ei melding med ei lenke for å stadfeste kontoen har vorte sendt til epostadressa di. Klikk på lenka for å aktivere kontoen. Sjekk søppelpostmappa dersom du ikkje har fått eposten. + update_needs_confirmation: Du har oppdatert kontoen din, men me må stadfesta den nye epostadressa. Sjekk innboksen og fylg lenka for å stadfeste adressa di. Sjekk søppelpostmappa dersom du ikkje har fått denne eposten. updated: Kontoen har vorte oppdatert. sessions: already_signed_out: Logga ut. signed_in: Logga inn. signed_out: Logga ut. unlocks: - send_instructions: Om nokre minutt får du ein e-post med instruksjonar for korleis du kan låse opp kontoen din. Sjekk søppelpostmappa om du ikkje finn den mailen. - send_paranoid_instructions: Dersom du har konto her, får du ein e-post med instruksjonar for korleis du kan låse opp kontoen din om nokre minutt. Sjekk søppelpostmappa om du ikkje finn den mailen. + send_instructions: Om nokre minutt får du ein epost med instruksjonar for korleis du kan låse opp kontoen din. Sjekk søppelpostmappa om du ikkje finn den eposten. + send_paranoid_instructions: Dersom du har konto her, får du ein epost med instruksjonar for korleis du kan låse opp kontoen din om nokre minutt. Sjekk søppelpostmappa om du ikkje finn den eposten. unlocked: Kontoen din har vorte låst opp. Logg inn for å halde fram. errors: messages: - already_confirmed: er allereie stadfesta, prøv logge inn + already_confirmed: er allereie stadfesta, prøv å logge inn confirmation_period_expired: må verte stadfesta innan %{period}, spør etter ein ny - expired: er utgått, ver venleg å beda om ein ny ein + expired: er utgått, ver venleg å be om ein ny ein not_found: ikkje funne not_locked: var ikkje låst not_saved: one: '1 feil hindra %{resource} frå verte lagra:' - other: "%{count} feil hindra %{resource} frå verte lagra:" + other: "%{count} feil hindra %{resource} frå å verte lagra:" diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml index db7c4d01a..5efa63bc9 100644 --- a/config/locales/doorkeeper.fi.yml +++ b/config/locales/doorkeeper.fi.yml @@ -60,6 +60,7 @@ fi: error: title: Tapahtui virhe new: + prompt_html: "%{client_name} pyytää lupaa käyttää tiliäsi. Se on kolmannen osapuolen sovellus. Jos et luota siihen, sinun ei pitäisi sallia sitä." review_permissions: Tarkista käyttöoikeudet title: Valtuutus vaaditaan show: @@ -70,6 +71,8 @@ fi: confirmations: revoke: Oletko varma? index: + authorized_at: Valtuutettu %{date} + description_html: Nämä ovat sovelluksia, jotka voivat käyttää tiliäsi käyttäen API. Jos et tunnista sitä tai sovellus toimii väärin, voit peruuttaa sen käyttöoikeuden. last_used_at: Viimeksi käytetty %{date} never_used: Ei käytetty scopes: Oikeudet @@ -116,6 +119,9 @@ fi: write: Vain kirjoitus title: accounts: Tilit + admin/accounts: Tilien hallinta + admin/all: Kaikki hallinnolliset toiminnot + admin/reports: Raporttien hallinta all: Kaikki blocks: Torjutut bookmarks: Kirjanmerkit @@ -147,6 +153,7 @@ fi: admin:write: muokata kaikkia tietoja palvelimella admin:write:accounts: suorita moderointitoiminnot tileillä admin:write:reports: suorita moderointitoiminnot raporteissa + crypto: käytä päästä päähän salausta follow: seurata, estää, perua eston ja lopettaa tilien seuraaminen push: vastaanottaa push-ilmoituksesi read: lukea tilin tietoja @@ -166,6 +173,7 @@ fi: write:accounts: muokata profiiliasi write:blocks: estää tilit ja palvelimet write:bookmarks: kirjanmerkki viestit + write:conversations: mykistä ja poistaa keskustelut write:favourites: suosikki viestit write:filters: luoda suodattimia write:follows: seurata ihmisiä diff --git a/config/locales/doorkeeper.nn.yml b/config/locales/doorkeeper.nn.yml index 789b50f61..d17d38c3f 100644 --- a/config/locales/doorkeeper.nn.yml +++ b/config/locales/doorkeeper.nn.yml @@ -60,6 +60,7 @@ nn: error: title: Ein feil har oppstått new: + prompt_html: "%{client_name} ønsker tilgang til kontoen din. Det er ein tredjepartsapplikasjon. Dersom du ikkje stolar på den, bør du ikkje autorisere det." title: Autorisasjon nødvendig show: title: Kopier denne autorisasjonskoden og lim den inn i applikasjonen. @@ -69,6 +70,9 @@ nn: confirmations: revoke: Er du sikker? index: + authorized_at: Autorisert den %{date} + last_used_at: Sist brukt den %{date} + never_used: Aldri brukt title: Dine autoriserte applikasjonar errors: messages: @@ -104,6 +108,25 @@ nn: authorized_applications: destroy: notice: App avvist. + grouped_scopes: + title: + accounts: Kontoar + admin/accounts: Kontoadministrasjon + admin/all: Alle administrative funksjonar + admin/reports: Rapportadministrasjon + all: Alt + bookmarks: Bokmerke + conversations: Samtalar + crypto: Ende-til-ende-kryptering + favourites: Favorittar + filters: Filter + lists: Lister + media: Mediavedlegg + mutes: Målbindingar + notifications: Varsel + reports: Rapportar + search: Søk + statuses: Innlegg layouts: admin: nav: @@ -118,6 +141,7 @@ nn: admin:write: modifisere alle data på tjeneren admin:write:accounts: utføre moderatorhandlinger på kontoer admin:write:reports: utføre moderatorhandlinger på rapporter + crypto: bruk ende-til-ende-kryptering follow: følg, blokkér, avblokkér, avfølg brukere push: motta dine varsler read: lese dine data @@ -132,12 +156,13 @@ nn: read:notifications: sjå varsla dine read:reports: sjå rapportane dine read:search: søke på dine vegne - read:statuses: sjå alle statusar + read:statuses: sjå alle innlegg write: poste på dine vegne - write:accounts: rediger profilen din + write:accounts: redigera profilen din write:blocks: blokker kontoar og domene write:bookmarks: bokmerk statusar - write:favourites: merk statusar som favoritt + write:conversations: målbind og slett samtalar + write:favourites: merk innlegg som favoritt write:filters: lag filter write:follows: fylg folk write:lists: lag lister @@ -145,4 +170,4 @@ nn: write:mutes: målbind folk og samtalar write:notifications: tøm varsla dine write:reports: rapporter andre folk - write:statuses: legg ut statusar + write:statuses: publiser innlegg diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index a7e4a69a5..a0913dc92 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -88,7 +88,7 @@ th: invalid_request: missing_param: 'พารามิเตอร์ที่จำเป็นขาดหายไป: %{value}' request_not_authorized: คำขอจำเป็นต้องได้รับอนุญาต พารามิเตอร์ที่จำเป็นสำหรับการอนุญาตคำขอขาดหายไปหรือไม่ถูกต้อง - unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น รวมค่าพารามิเตอร์ที่ไม่รองรับ หรือผิดรูปแบบ + unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น รวมค่าพารามิเตอร์ที่ไม่รองรับ หรือมิฉะนั้นผิดรูปแบบ invalid_resource_owner: ข้อมูลประจำตัวเจ้าของทรัพยากรที่ให้มาไม่ถูกต้อง หรือไม่พบเจ้าของทรัพยากร invalid_scope: ขอบเขตที่ขอไม่ถูกต้อง ไม่รู้จัก หรือผิดรูปแบบ invalid_token: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 5d3e1e367..6ac1eb45d 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -26,16 +26,18 @@ eo: ' learn_more: Lerni pli + logged_in_as_html: Vi nun salutis kiel %{username}. logout_before_registering: Vi jam salutis. - privacy_policy: Privateca politiko + privacy_policy: Politiko de privateco rules: Reguloj de la servilo see_whats_happening: Vidi kio okazas - server_stats: Servo statuso + server_stats: 'Statistiko de la servilo:' source_code: Fontkodo status_count_after: one: mesaĝo other: mesaĝoj status_count_before: Kie skribiĝis + tagline: Malcentrigita socia retejo terms: Kondiĉoj de la servo unavailable_content: Moderigitaj serviloj unavailable_content_description: @@ -108,9 +110,9 @@ eo: delete: Forigi datumojn deleted: Forigita demote: Degradi - disable: Malebligi - disable_two_factor_authentication: Malebligi 2FA - disabled: Malebligita + disable: Frostigi + disable_two_factor_authentication: Malaktivigi 2FA-n + disabled: Frostigita display_name: Montrata nomo domain: Domajno edit: Redakti @@ -220,9 +222,9 @@ eo: destroy_ip_block: Forigi IP-regulon destroy_status: Forigi mesaĝon destroy_unavailable_domain: Forigi Nehaveblan Domajnon - disable_2fa_user: Malebligi 2FA - disable_custom_emoji: Malebligi Propran Emoĝion - disable_user: Malebligi uzanton + disable_2fa_user: Malaktivigi 2FA-n + disable_custom_emoji: Malaktivigi la proprajn emoĝiojn + disable_user: Malaktivigi la uzanton enable_custom_emoji: Ebligi Propran Emoĝion enable_sign_in_token_auth_user: Aktivigi la aŭtentigon de peco per retpoŝto por la uzanto enable_user: Ebligi uzanton @@ -265,9 +267,9 @@ eo: destroy_email_domain_block_html: "%{name} malblokis retpoŝtan domajnon %{target}" destroy_ip_block_html: "%{name} forigis regulon por IP %{target}" destroy_status_html: "%{name} forigis mesaĝojn de %{target}" - disable_2fa_user_html: "%{name} malebligis dufaktoran aŭtentigon por uzanto %{target}" - disable_custom_emoji_html: "%{name} malebligis emoĝion %{target}" - disable_user_html: "%{name} malebligis ensaluton por uzanto %{target}" + disable_2fa_user_html: "%{name} malaktivigis la postulon de la dufaktora aŭtentigo por la uzanto %{target}" + disable_custom_emoji_html: "%{name} neebligis la emoĝion %{target}" + disable_user_html: "%{name} neebligis la saluton de la uzanto %{target}" enable_custom_emoji_html: "%{name} ebligis emoĝion %{target}" enable_user_html: "%{name} ebligis ensaluton por uzanto %{target}" memorialize_account_html: "%{name} ŝanĝis la konton de %{target} al memora paĝo" @@ -310,9 +312,9 @@ eo: created_msg: Emoĝio sukcese kreita! delete: Forigi destroyed_msg: Emoĝio sukcese forigita! - disable: Malebligi - disabled: Malebligita - disabled_msg: Emoĝio sukcese malebligita + disable: Neebligi + disabled: Neebligita + disabled_msg: La emoĝio sukcese neebligita emoji: Emoĝio enable: Ebligi enabled: Ebligita @@ -458,11 +460,11 @@ eo: add_new: Aldoni novan ripetilon delete: Forigi description_html: "Fratara ripetilo estas survoja servilo, kiu interŝanĝas grandan kvanton de publikaj mesaĝoj inter serviloj, kiuj abonas kaj publikigas al ĝi. Ĝi povas helpi etajn kaj mezgrandajn servilojn malkovri enhavon de la fediverse, kio normale postulus al lokaj uzantoj mane sekvi homojn de foraj serviloj." - disable: Malebligi - disabled: Malebligita + disable: Neebligi + disabled: Neebligita enable: Ebligi enable_hint: Post ebligo, via servilo abonos ĉiujn publikajn mesaĝojn de tiu ripetilo, kaj komencos sendi publikajn mesaĝojn de la servilo al ĝi. - enabled: Malebligita + enabled: Ebligita inbox_url: URL de la ripetilo pending: Atendante aprobon de la ripetilo save_and_enable: Konservi kaj ebligi @@ -618,7 +620,7 @@ eo: strikes: actions: delete_statuses: "%{name} forigis afiŝojn de %{target}" - disable: "%{name} malebligis la konton de %{target}" + disable: "%{name} frostigis la konton de %{target}" suspend: "%{name} suspendis la konton de %{target}" appeal_approved: Apelaciita system_checks: @@ -644,6 +646,9 @@ eo: allow_account: Permesi aŭtoron disallow: Malpermesi afiŝon disallow_account: Malpermesi aŭtoron + shared_by: + one: Kundividita kaj aldonita al preferaĵoj unufoje + other: Kundividita kaj aldonita al preferaĵoj %{friendly_count}-foje title: Tendencantaj afiŝoj tags: dashboard: @@ -660,7 +665,7 @@ eo: admin_mailer: new_appeal: actions: - disable: por malebligi ties konton + disable: por frostigi ties konton new_pending_account: body: La detaloj de la nova konto estas sube. Vi povas aprobi aŭ Malakcepti ĉi kandidatiĝo. subject: Nova konto atendas por recenzo en %{instance} (%{username}) @@ -765,7 +770,7 @@ eo: invalid_signature: 올바른 Ed25519 시그니처가 아닙니다 date: formats: - default: "%d de %b %Y" + default: "%Y-%b-%d" with_month_name: "%e-a de %B %Y" datetime: distance_in_words: @@ -858,7 +863,7 @@ eo: errors: invalid_context: Neniu aŭ nevalida kunteksto donita index: - contexts: Filtri en %{contexts} + contexts: Filtriloj en %{contexts} delete: Forigi empty: Vi havas neniun filtrilon. expires_in: Eksvalidiĝi en %{distance} @@ -922,7 +927,7 @@ eo: one: 1 uzo other: "%{count} uzoj" max_uses_prompt: Neniu limo - prompt: Krei kaj diskonigi ligilojn al aliaj por doni aliron al ĉi tiu servilo + prompt: Generi kaj kundividi ligilojn kun aliaj personoj por doni aliron al ĉi tiu servilo table: expires_at: Eksvalidiĝas je uses: Uzoj @@ -994,9 +999,9 @@ eo: subject: "%{name} menciis vin" title: Nova mencio reblog: - body: "%{name} diskonigis vian mesaĝon:" - subject: "%{name} diskonigis vian mesaĝon" - title: Nova diskonigo + body: 'Via mesaĝo estas suprenigita de %{name}:' + subject: "%{name} suprenigis vian mesaĝon" + title: Nova suprenigo status: subject: "%{name} ĵus afiŝita" update: @@ -1076,8 +1081,8 @@ eo: proceed: Konfirmi la stelumon prompt: 'Vi volas aldoni ĉi tiun mesaĝon al viaj preferaĵoj:' reblog: - proceed: Konfirmi la diskonigon - prompt: 'Vi volas diskonigi ĉi tiun mesaĝon:' + proceed: Procedi pri la suprenigo + prompt: 'Vi deziras suprenigi ĉi tiun mesaĝon:' reply: proceed: Konfirmi la respondon prompt: 'Vi volas respondi al ĉi tiu mesaĝo:' @@ -1161,7 +1166,7 @@ eo: video: one: "%{count} video" other: "%{count} videoj" - boosted_from_html: Diskonigita de %{acct_link} + boosted_from_html: Suprenigita de %{acct_link} content_warning: 'Averto de la enhavo: %{warning}' default_language: Same kiel lingvo de la fasado disallowed_hashtags: @@ -1172,7 +1177,7 @@ eo: pin_errors: limit: Vi jam atingis la maksimuman nombron de alpinglitaj mesaĝoj ownership: Mesaĝo de iu alia ne povas esti alpinglita - reblog: Diskonigo ne povas esti alpinglita + reblog: Suprenigo ne povas esti alpinglita poll: total_people: one: "%{count} persono" @@ -1199,7 +1204,7 @@ eo: enabled: Aŭtomate forigi malnovajn postojn exceptions: Esceptoj ignore_favs: Ignori la preferaĵojn - ignore_reblogs: Ignori akcelojn + ignore_reblogs: Ignori la suprenigojn keep_direct: Konservi rektajn mesaĝojn keep_direct_hint: Ne forigos viajn rektajn mesagôjn keep_media: Konservi la mesaĝojn kun aŭdovidaj aldonaĵoj @@ -1216,7 +1221,7 @@ eo: '7889238': 3 monatoj stream_entries: pinned: Alpinglita - reblogged: diskonigita + reblogged: suprenigita sensitive_content: Tikla enhavo tags: does_not_match_previous_name: ne kongruas kun la antaŭa nomo @@ -1233,8 +1238,8 @@ eo: time: "%H:%M" two_factor_authentication: add: Aldoni - disable: Malebligi - disabled_success: Dufaktora aŭtentigo sukcese malebligita + disable: Malaktivigi 2FA-n + disabled_success: Du-faktora aŭtentigo sukcese malaktivigita edit: Redakti enabled: Dufaktora aŭtentigo ebligita enabled_success: Dufaktora aŭtentigo sukcese ebligita diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 7ba46a89c..8faa88f56 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -103,11 +103,17 @@ es-MX: avatar: Foto de perfil by_domain: Dominio change_email: + changed_msg: "¡Email cambiado con éxito!" current_email: Correo electrónico actual label: Cambiar el correo electrónico new_email: Nuevo correo electrónico submit: Cambiar el correo electrónico title: Cambiar el correo electrónico de %{username} + change_role: + changed_msg: "¡Rol cambiado con éxito!" + label: Cambiar rol + no_role: Sin rol + title: Cambiar rol para %{username} confirm: Confirmar confirmed: Confirmado confirming: Confirmando @@ -151,6 +157,7 @@ es-MX: active: Activo all: Todos pending: Pendiente + silenced: Limitado suspended: Suspendidos title: Moderación moderation_notes: Notas de moderación @@ -158,6 +165,7 @@ es-MX: most_recent_ip: IP más reciente no_account_selected: Ninguna cuenta se cambió como ninguna fue seleccionada no_limits_imposed: Sin límites impuestos + no_role_assigned: Ningún rol asignado not_subscribed: No se está suscrito pending: Revisión pendiente perform_full_suspension: Suspender @@ -184,6 +192,7 @@ es-MX: reset: Reiniciar reset_password: Reiniciar contraseña resubscribe: Re-suscribir + role: Rol search: Buscar search_same_email_domain: Otros usuarios con el mismo dominio de correo search_same_ip: Otros usuarios con la misma IP @@ -640,6 +649,67 @@ es-MX: unresolved: No resuelto updated_at: Actualizado view_profile: Ver perfil + roles: + add_new: Añadir rol + assigned_users: + one: "%{count} usuario" + other: "%{count} usuarios" + categories: + administration: Administración + devops: DevOps + invites: Invitaciones + moderation: Moderación + special: Especial + delete: Eliminar + description_html: Con roles de usuario, puede personalizar las funciones y áreas de Mastodon a las que pueden acceder sus usuarios. + edit: Editar rol '%{name}' + everyone: Permisos por defecto + everyone_full_description_html: Este es el rol base que afecta a todos los usuarios, incluso aquellos sin un rol asignado. Todos los otros roles heredan permisos de él. + permissions_count: + one: "%{count} permiso" + other: "%{count} permisos" + privileges: + administrator: Administrador + administrator_description: Los usuarios con este permiso saltarán todos los permisos + delete_user_data: Borrar Datos de Usuario + delete_user_data_description: Permite a los usuarios eliminar los datos de otros usuarios sin demora + invite_users: Invitar usuarios + invite_users_description: Permite a los usuarios invitar a nuevas personas al servidor + manage_announcements: Administrar Anuncios + manage_announcements_description: Permite a los usuarios gestionar anuncios en el servidor + manage_appeals: Administrar Apelaciones + manage_appeals_description: Permite a los usuarios revisar apelaciones contra acciones de moderación + manage_blocks: Administrar Bloqueos + manage_blocks_description: Permite a los usuarios bloquear los proveedores de e-mail y las direcciones IP + manage_custom_emojis: Administrar Emojis Personalizados + manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor + manage_federation: Administrar Federación + manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad + manage_invites: Administrar Invitaciones + manage_invites_description: Permite a los usuarios navegar y desactivar los enlaces de invitación + manage_reports: Administrar Informes + manage_reports_description: Permite a los usuarios revisar informes y realizar acciones de moderación basadas en ellos + manage_roles: Administrar Roles + manage_roles_description: Permite a los usuarios administrar y asignar roles por debajo de los suyos + manage_rules: Gestionar Reglas + manage_rules_description: Permite a los usuarios cambiar las reglas del servidor + manage_settings: Administrar Ajustes + manage_settings_description: Permite a los usuarios cambiar la configuración del sitio + manage_taxonomies: Administrar Taxonomías + manage_taxonomies_description: Permite a los usuarios revisar el contenido en tendencia y actualizar la configuración de las etiquetas + manage_user_access: Administrar Acceso de Usuarios + manage_user_access_description: Permite a los usuarios desactivar la autenticación de dos factores de otros usuarios, cambiar su dirección de correo electrónico y restablecer su contraseña + manage_users: Administrar Usuarios + manage_users_description: Permite a los usuarios ver los detalles de otros usuarios y realizar acciones de moderación contra ellos + manage_webhooks: Administrar Webhooks + manage_webhooks_description: Permite a los usuarios configurar webhooks para eventos administrativos + view_audit_log: Ver Registro de Auditoría + view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor + view_dashboard: Ver Panel de Control + view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas + view_devops: DevOps + view_devops_description: Permite a los usuarios acceder a los paneles de control Sidekiq y pgHero + title: Roles rules: add_new: Añadir norma delete: Eliminar diff --git a/config/locales/gd.yml b/config/locales/gd.yml index bdbd26199..c98235cff 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -40,6 +40,7 @@ gd: other: post two: phost status_count_before: A dh’fhoillsich + tagline: Lìonra sòisealta sgaoilte terms: Teirmichean na seirbheise unavailable_content: Frithealaichean fo mhaorsainneachd unavailable_content_description: @@ -110,11 +111,17 @@ gd: avatar: Avatar by_domain: Àrainn change_email: + changed_msg: Chaidh am post-d atharrachadh! current_email: Am post-d làithreach label: Atharraich am post-d new_email: Post-d ùr submit: Atharraich am post-d title: Atharraich am post-d airson %{username} + change_role: + changed_msg: Chaidh an dreuchd atharrachadh! + label: Atharraich an dreuchd + no_role: Gun dreuchd + title: Atharraich an dreuchd aig %{username} confirm: Dearbh confirmed: Chaidh a dhearbhachadh confirming: "’Ga dhearbhadh" @@ -158,6 +165,7 @@ gd: active: Gnìomhach all: Na h-uile pending: Ri dhèiligeadh + silenced: Cuingichte suspended: À rèim title: Maorsainneachd moderation_notes: Nòtaichean na maorsainneachd @@ -165,6 +173,7 @@ gd: most_recent_ip: An IP as ùire no_account_selected: Cha deach cunntas sam bith atharrachadh o nach deach gin dhiubh a thaghadh no_limits_imposed: Cha deach crìoch sam bith a sparradh + no_role_assigned: Cha deach dreuchd iomruineadh not_subscribed: Gun fho-sgrìobhadh pending: A’ feitheamh air lèirmheas perform_full_suspension: Cuir à rèim @@ -193,6 +202,7 @@ gd: reset: Ath-shuidhich reset_password: Ath-shuidhich am facal-faire resubscribe: Fo-sgrìobh a-rithist + role: Dreuchd search: Lorg search_same_email_domain: Cleachdaichean eile aig a bheil an aon àrainn puist-d search_same_ip: Cleachdaichean eile aig a bheil an t-aon IP @@ -667,6 +677,71 @@ gd: unresolved: Gun fhuasgladh updated_at: Air ùrachadh view_profile: Seall a’ phròifil + roles: + add_new: Cuir dreuchd ris + assigned_users: + few: "%{count} cleachdaichean" + one: "%{count} chleachdaiche" + other: "%{count} cleachdaiche" + two: "%{count} chleachdaiche" + categories: + administration: Rianachd + devops: DevOps + invites: Cuiridhean + moderation: Maorsainneachd + special: Sònraichte + delete: Sguab às + description_html: Le dreuchdan chleachdaichean, ’s urrainn dhut gnàthachadh dè na gleusan is raointean de Mhastodon as urrainn dha na cleachdaichean agad inntrigeadh. + edit: Deasaich an dreuchd aig “%{name}“ + everyone: Na ceadan bunaiteach + everyone_full_description_html: Seo an dreuchd bhunaiteach a bheir buaidh air gach cleachdaiche, fiù an fheadhainn nach deach dreuchd iomruineadh dhaibh. Gheibh a h-uile dreuch ceadan uaipe mar dhìleab. + permissions_count: + few: "%{count} ceadan" + one: "%{count} chead" + other: "%{count} cead" + two: "%{count} chead" + privileges: + administrator: Rianaire + administrator_description: Chan eil cuingeachadh sam bith air na cleachdaichean aig bheil an cead seo + delete_user_data: Sguab às dàta a’ chleachdaiche + delete_user_data_description: Leigidh seo le cleachdaichean dàta chleachdaichean eile a sguabadh às gun dàil + invite_users: Thoir cuireadh do chleachdaichean + invite_users_description: Leigidh seo le cleachdaichean cuireadh dhan fhrithealaiche a chur gu daoine eile + manage_announcements: Stiùireadh nam brathan-fios + manage_announcements_description: Leigidh seo le cleachdaichean brathan-fios a stiùireadh air an fhrithealaiche + manage_appeals: Stiùireadh ath-thagraidhean + manage_appeals_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air ath-thagraidhean an aghaidh gnìomhan mhaor + manage_blocks: Stiùireadh nam bacaidhean + manage_blocks_description: Leigidh seo le cleachdaichean solaraichean puist-d is seòlaidhean IP a bhacadh + manage_custom_emojis: Stiùireadh nan Emojis gnàthaichte + manage_custom_emojis_description: Leigidh seo le cleachdaichean Emojis gnàthaichte a stiùireadh air an fhrithealaiche + manage_federation: Stiùireadh a’ cho-nasgaidh + manage_federation_description: Leigidh seo le cleachdaichean an co-nasgadh le àrainnean eile a bhacadh no a cheadachadh agus stiùireadh dè ghabhas lìbhrigeadh + manage_invites: Stiùireadh nan cuiridhean + manage_invites_description: Leigidh seo le cleachdaichean ceanglaichean cuiridh a rùrachadh ’s a chur à gnìomh + manage_reports: Stiùireadh ghearanan + manage_reports_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air gearanan agus gnìomhan maoir a ghabhail ’nan aghaidh + manage_roles: Stiùireadh dhreuchdan + manage_roles_description: Leigidh seo le cleachdaichean dreuchdan a stiùireadh is iomruineadh do dh’ìochdaran + manage_rules: Stiùireadh nan riaghailtean + manage_rules_description: Leigidh seo le cleachdaichean riaghailtean an fhrithealaiche atharrachadh + manage_settings: Stiùireadh nan roghainnean + manage_settings_description: Leigidh seo le cleachdaichean roghainnean na làraich atharrachadh + manage_taxonomies: Stiùireadh thacsonamaidhean + manage_taxonomies_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air an t-susbaint a tha a’ treandadh agus roghainnean nan tagaichean hais ùrachadh + manage_user_access: Stiùireadh inntrigeadh chleachdaichean + manage_user_access_description: Leigidh seo le cleachdaichean gun cuir iad à comas dearbhadh dà-cheumnach càich, gun atharraich iad an seòladh puist-d aca is gun ath-shuidhich iad am facal-faire aca + manage_users: Stiùireadh chleachdaichean + manage_users_description: Leigidh seo le cleachdaichean mion-fhiosrachadh càich a shealltainn agus gnìomhan maoir a ghabhail ’nan aghaidh + manage_webhooks: Stiùireadh nan webhooks + manage_webhooks_description: Leigidh seo le cleachdaichean webhooks a shuidheachadh do thachartasan na rianachd + view_audit_log: Coimhead air an loga sgrùdaidh + view_audit_log_description: Leigidh seo le cleachdaichean coimhead air eachdraidh gnìomhan na rianachd air an fhrithealaiche + view_dashboard: Coimhead air an deas-bhòrd + view_dashboard_description: Leigidh seo le cleachdaichean an deas-bhòrd agus meatrachdan inntrigeadh + view_devops: DevOps + view_devops_description: Leigidh seo le cleachdaichean na deas-bhùird aig Sidekiq is pgHero inntrigeadh + title: Dreuchdan rules: add_new: Cuir riaghailt ris delete: Sguab às @@ -870,6 +945,28 @@ gd: edit_preset: Deasaich rabhadh ro-shuidhichte empty: Cha do mhìnich thu ro-sheataichean rabhaidhean fhathast. title: Stiùirich na rabhaidhean ro-shuidhichte + webhooks: + add_new: Cuir puing-dheiridh ris + delete: Sguab às + description_html: Bheir webhook comas do Mhastodon gus brathan fìor-ama a phutadh dhan aplacaid agad fhèin mu na tachartasan a thagh thu ach an adhbharaich an aplacaid agad freagairtean gu fèin-obrachail. + disable: Cuir à comas + disabled: À comas + edit: Deasaich a’ phuing-dheiridh + empty: Cha deach puing-deiridh webhook sam bith a rèiteachadh fhathast. + enable: Cuir an comas + enabled: Gnìomhach + enabled_events: + few: Tha %{count} tachartasan an comas + one: Tha %{count} tachartas an comas + other: Tha %{count} tachartas an comas + two: Tha %{count} thachartas an comas + events: Tachartasan + new: Webhook ùr + rotate_secret: Cuairtich an rùn + secret: Rùn soidhnich + status: Staid + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -1122,14 +1219,26 @@ gd: public: Loidhnichean-ama poblach thread: Còmhraidhean edit: + add_keyword: Cuir facal-luirg ris + keywords: Faclan-luirg title: Deasaich a’ chriathrag errors: + deprecated_api_multiple_keywords: Cha ghabh na paramadairean seo atharrachadh on aplacaid seo on a bhios iad an sàs air iomadh facal-luirg na criathraige. Cleachd aplacaid nas ùire no an eadar-aghaidh-lìn. invalid_context: Cha deach co-theacs a sholar no tha e mì-dhligheach index: + contexts: Criathradh am broinn %{contexts} delete: Sguab às empty: Chan eil criathrag agad. + expires_in: Falbhaidh an ùine air an ceann %{distance} + expires_on: Falbhaidh an ùine air %{date} + keywords: + few: "%{count} faclan-luirg" + one: "%{count} fhacal-luirg" + other: "%{count} facal-luirg" + two: "%{count} fhacal-luirg" title: Criathragan new: + save: Sàbhail a’ chriathrag ùr title: Cuir criathrag ùr ris footer: developers: Luchd-leasachaidh @@ -1252,6 +1361,8 @@ gd: copy_account_note_text: 'Da cleachdaiche air gluasad o %{acct}, seo na nòtaichean a bh’ agad mu dhèidhinn roimhe:' notification_mailer: admin: + report: + subject: Rinn %{name} gearan sign_up: subject: Chlàraich %{name} digest: @@ -1328,7 +1439,7 @@ gd: polls: errors: already_voted: Chuir thu bhòt sa chunntas-bheachd seo mu thràth - duplicate_options: " – tha nithean dùblaichte ann" + duplicate_options: "– tha nithean dùblaichte ann" duration_too_long: "– tha seo ro fhad air falbh san àm ri teachd" duration_too_short: "– tha seo ro aithghearr" expired: Tha an cunntas-bheachd air a thighinn gu crìoch diff --git a/config/locales/he.yml b/config/locales/he.yml index 74fee81cc..2106423bc 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -200,15 +200,15 @@ he: send: שלח מחדש דוא"ל אימות success: הודעת האימייל נשלחה בהצלחה! reset: איפוס - reset_password: אתחול סיסמא + reset_password: איפוס סיסמה resubscribe: להרשם מחדש role: תפקיד search: חיפוש search_same_email_domain: משתמשים אחרים מאותו דומיין דוא"ל search_same_ip: משתמשים אחרים מאותה כתובת IP security_measures: - only_password: סיסמא בלבד - password_and_2fa: סיסמא ואימות דו-גורמי + only_password: סיסמה בלבד + password_and_2fa: סיסמה ואימות דו-שלבי sensitive: מאולצים לרגישות sensitized: מסומנים כרגישים shared_inbox_url: תיבה משותפת לדואר נכנס @@ -277,7 +277,7 @@ he: reject_user: דחיית משתמש remove_avatar_user: הסרת תמונת פרופיל reopen_report: פתיחת דו"ח מחדש - reset_password_user: איפוס סיסמא + reset_password_user: איפוס סיסמה resolve_report: פתירת דו"ח sensitive_account: חשבון רגיש לכח silence_account: הגבלת חשבון @@ -328,7 +328,7 @@ he: reject_user_html: "%{name} דחו הרשמה מ-%{target}" remove_avatar_user_html: "%{name} הסירו את תמונת הפרופיל של %{target}" reopen_report_html: '%{name} פתח מחדש דו"ח %{target}' - reset_password_user_html: "%{name} איפס/ה סיסמא עבור המשתמש %{target}" + reset_password_user_html: הסיסמה עבור המשתמש %{target} התאפסה על־ידי %{name} resolve_report_html: '%{name} פתר/ה דו"ח %{target}' sensitive_account_html: "%{name} סימן/ה את המדיה של %{target} כרגיש" silence_account_html: "%{name} הגביל/ה את חשבונו של %{target}" @@ -1036,7 +1036,7 @@ he: your_token: אסימון הגישה שלך auth: apply_for_account: בקשת הזמנה - change_password: סיסמא + change_password: סיסמה checkbox_agreement_html: אני מסכים/ה לכללי השרת ולתנאי השימוש checkbox_agreement_without_rules_html: אני מסכים/ה לתנאי השימוש delete_account: מחיקת חשבון @@ -1048,7 +1048,7 @@ he: didnt_get_confirmation: לא התקבלו הוראות אימות? dont_have_your_security_key: אין לך מפתח אבטחה? forgot_password: הנשתכחה סיסמתך? - invalid_reset_password_token: אסימון איפוס הסיסמא לא תקין או פג תוקף. נא לבקש אחד חדש. + invalid_reset_password_token: טוקן איפוס הסיסמה אינו תקין או שפג תוקף. נא לבקש אחד חדש. link_to_otp: נא להכניס את קוד האימות הדו-גורמי מהטלפון או את קוד האחזור link_to_webauth: נא להשתמש במכשיר מפתח האבטחה log_in_with: התחבר באמצעות @@ -1063,9 +1063,9 @@ he: register: הרשמה registration_closed: "%{instance} לא מקבל חברים חדשים" resend_confirmation: שלח הוראות אימות בשנית - reset_password: איפוס סיסמא - security: החלפת סיסמא - set_new_password: שינוי סיסמא + reset_password: איפוס סיסמה + security: אבטחה + set_new_password: סיסמה חדשה setup: email_below_hint_html: אם כתובת הדוא"ל להלן לא נכונה, ניתן לשנותה כאן ולקבל דוא"ל אישור חדש. email_settings_hint_html: דוא"ל האישור נשלח ל-%{email}. אם כתובת הדוא"ל הזו לא נכונה, ניתן לשנותה בהגדרות החשבון. @@ -1095,8 +1095,8 @@ he: challenge: confirm: המשך hint_html: "טיפ: לא נבקש את סיסמתך שוב בשעה הקרובה." - invalid_password: סיסמא שגויה - prompt: אשר/י סיסמא להמשך + invalid_password: סיסמה שגויה + prompt: יש לאשר את הסיסמה כדי להמשיך crypto: errors: invalid_key: זהו לא מפתח Ed25519 או Curve25519 קביל @@ -1121,7 +1121,7 @@ he: x_seconds: "%{count} שניות" deletes: challenge_not_passed: המידע שהכנסת לא היה נכון - confirm_password: נא להכניס את הסיסמא הנוכחית כדי לוודא את זהותך + confirm_password: נא להכניס את הסיסמה הנוכחית כדי לאמת את זהותך confirm_username: נא להכניס את שם המשתמש כדאי לאשר את הפעולה proceed: מחיקת חשבון success_msg: חשבונך נמחק בהצלחה @@ -1308,7 +1308,7 @@ he: login_activities: authentication_methods: otp: יישומון אימות דו-שלבי - password: סיסמא + password: סיסמה sign_in_token: קוד אימות בדוא"ל webauthn: מפתחות אבטחה description_html: אם את/ה רואה פעילות שאינך מזהה, אנא שנה/י את סיסמתך והפעל/י אימות דו-גורמי. @@ -1672,6 +1672,87 @@ he: tags: does_not_match_previous_name: לא תואם את השם האחרון terms: + body_html: | +

מדיניות פרטיות

+

איזה מידע אנחנו אוספים ?

+ +
    +
  • מידע חשבון בסיסי: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • +
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • +
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
  • +
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • +
+ +
+ +

What do we use your information for?

+ +

Any of the information we collect from you may be used in the following ways:

+ +
    +
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • +
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • +
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • +
+ +
+ +

How do we protect your information?

+ +

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

+ +
+ +

What is our data retention policy?

+ +

We will make a good faith effort to:

+ +
    +
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • +
  • Retain the IP addresses associated with registered users no more than 12 months.
  • +
+ +

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

+ +

You may irreversibly delete your account at any time.

+ +
+ +

Do we use cookies?

+ +

Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

+ +

We use cookies to understand and save your preferences for future visits.

+ +
+ +

Do we disclose any information to outside parties?

+ +

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

+ +

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

+ +

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

+ +
+ +

Site usage by children

+ +

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

+ +

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

+ +

Law requirements can be different if this server is in another jurisdiction.

+ +
+ +

Changes to our Privacy Policy

+ +

If we decide to change our privacy policy, we will post those changes on this page.

+ +

This document is CC-BY-SA. It was last updated May 26, 2022.

+ +

Originally adapted from the Discourse privacy policy.

title: תנאי שימוש ומדיניות פרטיות ב-%{instance} themes: contrast: מסטודון (ניגודיות גבוהה) diff --git a/config/locales/ja.yml b/config/locales/ja.yml index e4c7b6d11..5dccf1a43 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -145,6 +145,7 @@ ja: active: アクティブ all: すべて pending: 承認待ち + silenced: 制限 suspended: 停止済み title: モデレーション moderation_notes: モデレーションメモ @@ -152,6 +153,7 @@ ja: most_recent_ip: 直近のIP no_account_selected: 何も選択されていないため、変更されていません no_limits_imposed: 制限なし + no_role_assigned: ロールが割り当てられていません not_subscribed: 購読していない pending: 承認待ち perform_full_suspension: 活動を完全に停止させる @@ -177,6 +179,7 @@ ja: reset: リセット reset_password: パスワード再設定 resubscribe: 再講読 + role: 役割 search: 検索 search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー search_same_ip: 同じIPのユーザーを検索 @@ -621,7 +624,42 @@ ja: updated_at: 更新日時 view_profile: プロフィールを表示 roles: + add_new: 役割を追加 + assigned_users: + other: "%{count} 人" + categories: + administration: 管理 + devops: 開発者 + invites: 招待 + moderation: モデレーション + delete: 削除 + description_html: "ユーザー ロールを使用すると、ユーザーがアクセスできる Mastodon の機能や領域をカスタマイズできます。" + edit: "'%{name}' の役割を編集" + everyone: デフォルトの権限 + everyone_full_description_html: これは、割り当てられたロールを持っていないものであっても、 すべてのユーザー に影響を与える 基本ロールです。 他のすべてのロールは、そこから権限を継承します。 + permissions_count: + other: "%{count} つの権限" privileges: + administrator: 管理者 + administrator_description: この権限を持つユーザーはすべての権限をバイパスします + delete_user_data: ユーザーデータの削除 + delete_user_data_description: ユーザーは、遅滞なく他のユーザーのデータを削除することができます + invite_users: ユーザーを招待 + invite_users_description: ユーザーがサーバーに新しい人を招待できるようにします + manage_announcements: お知らせの管理 + manage_announcements_description: ユーザーがサーバー上のアナウンスを管理できるようにします + manage_appeals: 抗議の管理 + manage_appeals_description: ユーザーはモデレーションアクションに対する抗議を確認できます + manage_blocks: ブロックの管理 + manage_blocks_description: ユーザーが電子メールプロバイダとIPアドレスをブロックできるようにします + manage_custom_emojis: カスタム絵文字を管理 + manage_custom_emojis_description: ユーザーがサーバー上のカスタム絵文字を管理できるようにします + manage_federation: 連合の管理 + manage_federation_description: ユーザーが他のドメインとの連合をブロックまたは許可したり、配信を制御したりできます。 + manage_invites: 招待を管理 + manage_reports: レポートの管理 + manage_reports_description: ユーザーがレポートを確認したり、モデレーションアクションを実行したりできます。 + manage_roles: 役職の管理 manage_rules: ルールの管理 manage_rules_description: ユーザーがサーバールールを変更できるようにします manage_settings: 設定の管理 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index ccc70d9c5..b6b663662 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -672,8 +672,19 @@ ku: other: "%{count} mafdayîn" privileges: administrator: Rêvebir + administrator_description: Bikarhênerên xwediyê vê mafdayînan wê her mafdayîn derbas bike + delete_user_data: Daneyên bikarhêner jê bibe + delete_user_data_description: Mafê dide bikarhêneran ku daneyên bikarhênerên din bêyî derengxisitn jê bibin invite_users: Bikarhêneran vexwîne + invite_users_description: Mafê dide bikarhêneran ku mirovên nû vexwîne bo rajekarê + manage_announcements: Reklaman bi rê be bibe + manage_announcements_description: Mafê dide bikarhêneran ku reklaman bi rê ve bibin li ser vê rajekarê + manage_appeals: Îtîrazan bi rê ve bibe + manage_appeals_description: Mafê dide bikarhêneran ku îtîrazan binirxînin li dijî çalakiyên çavdêriyê + manage_blocks: Astengkirinan bi rê ve bibe + manage_blocks_description: Mafê dide bikarhêneran ku peydakarê e-nameyê û navnîşanên IP asteng bike manage_custom_emojis: Emojiyên kesane bi rêve bibe + manage_custom_emojis_description: Mafê dide bikarhêneran ku îmojî kesane bikin li ser vê rajekarê manage_invites: Vexwendinan bi rêve bibe manage_roles: Rolan bi rêve bibe manage_rules: Rolan bi rêve bibe diff --git a/config/locales/lv.yml b/config/locales/lv.yml index cc7306c09..21da83077 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1002,9 +1002,9 @@ lv: sensitive_content: Sensitīvs saturs toot_layout: Ziņas izskats application_mailer: - notification_preferences: Mainīt e-pasta preferences + notification_preferences: Mainīt e-pasta uztādījumus salutation: "%{name}," - settings: 'Mainīt e-pasta preferences: %{link}' + settings: 'Mainīt e-pasta uztādījumus: %{link}' view: 'Skatījums:' view_profile: Skatīt profilu view_status: Skatīt ziņu @@ -1692,7 +1692,7 @@ lv:

Jā. Sīkfaili ir nelieli faili, ko vietne vai tās pakalpojumu sniedzējs pārsūta uz jūsu datora cieto disku, izmantojot jūsu tīmekļa pārlūkprogrammu (ja atļaujat). Šīs sīkdatnes ļauj vietnei atpazīt jūsu pārlūkprogrammu un, ja jums ir reģistrēts konts, saistīt to ar jūsu reģistrēto kontu.

-

Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu preferences turpmākiem apmeklējumiem.

+

Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu uztādījumus turpmākiem apmeklējumiem.


@@ -1808,8 +1808,8 @@ lv: final_step: 'Sāc publicēt! Pat bez sekotājiem tavas publiskās ziņas var redzēt citi, piemēram, vietējā ziņu lentā un atsaucēs. Iespējams, tu vēlēsies iepazīstināt ar sevi, izmantojot tēmturi #introductions.' full_handle: Tavs pilnais rokturis full_handle_hint: Šis ir tas, ko tu pasaki saviem draugiem, lai viņi varētu tev ziņot vai sekot tev no cita servera. - review_preferences_action: Mainīt preferences - review_preferences_step: Noteikti iestati savas preferences, piemēram, kādus e-pasta ziņojumus vēlies saņemt vai kādu konfidencialitātes līmeni vēlies iestatīt savām ziņām pēc noklusējuma. Ja tev nav kustību slimības, vari izvēlēties iespējot GIF automātisko atskaņošanu. + review_preferences_action: Mainīt uztādījumus + review_preferences_step: Noteikti iestati savas uztādījumus, piemēram, kādus e-pasta ziņojumus vēlies saņemt vai kādu konfidencialitātes līmeni vēlies iestatīt savām ziņām pēc noklusējuma. Ja tev nav kustību slimības, vari izvēlēties iespējot GIF automātisko atskaņošanu. subject: Laipni lūgts Mastodon tip_federated_timeline: Apvienotā ziņu lenta ir skats caur ugunsdzēsības šļūteni uz Mastodon tīklu. Bet tajā ir iekļauti tikai tie cilvēki, kurus abonē tavi kaimiņi, tāpēc tas nav pilnīgs. tip_following: Pēc noklusējuma tu seko sava servera administratoram(-iem). Lai atrastu vairāk interesantu cilvēku, pārbaudi vietējās un federālās ziņu lentas. diff --git a/config/locales/nl.yml b/config/locales/nl.yml index caf3370d8..e34092f8f 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1092,8 +1092,8 @@ nl: other: Je hebt trouwens sinds je weg was er ook %{count} nieuwe volgers bijgekregen! Fantastisch! title: Tijdens jouw afwezigheid... favourite: - body: 'Jouw bericht werd door %{name} aan diens favorieten toegevoegd:' - subject: "%{name} voegde jouw bericht als favoriet toe" + body: 'Jouw bericht werd door %{name} als favoriet gemarkeerd:' + subject: "%{name} markeerde jouw bericht als favoriet" title: Nieuwe favoriet follow: body: "%{name} volgt jou nu!" @@ -1117,6 +1117,8 @@ nl: title: Nieuwe boost status: subject: "%{name} heeft zojuist een bericht geplaatst" + update: + subject: "%{name} bewerkte een bericht" notifications: email_events: E-mailmeldingen voor gebeurtenissen email_events_hint: 'Selecteer gebeurtenissen waarvoor je meldingen wilt ontvangen:' @@ -1190,8 +1192,8 @@ nl: reason_html: " Waarom is deze extra stap nodig? %{instance} is wellicht niet de server waarop jij je geregistreerd hebt. We verwijzen je eerst door naar jouw eigen server." remote_interaction: favourite: - proceed: Doorgaan met toevoegen aan jouw favorieten - prompt: 'Je wilt het volgende bericht aan jouw favorieten toevoegen:' + proceed: Doorgaan met het markeren als favoriet + prompt: 'Je wilt het volgende bericht als favoriet markeren:' reblog: proceed: Doorgaan met boosten prompt: 'Je wilt het volgende bericht boosten:' @@ -1281,6 +1283,7 @@ nl: disallowed_hashtags: one: 'bevatte een niet toegestane hashtag: %{tags}' other: 'bevatte niet toegestane hashtags: %{tags}' + edited_at_html: Bewerkt op %{date} errors: in_reply_not_found: Het bericht waarop je probeert te reageren lijkt niet te bestaan. open_in_web: In de webapp openen diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 14f9b95ad..392b927e1 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -23,13 +23,15 @@ nn: hosted_on: "%{domain} er vert for Mastodon" instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" learn_more: Lær meir + logout_before_registering: Du er allereie logga inn. privacy_policy: Personvernsreglar - rules: Server regler - rules_html: 'Nedenfor er et sammendrag av reglene du må følge om du vil ha en konto på denne serveren av Mastodon:' + rules: Tenarreglar + rules_html: 'Nedanfor er eit samandrag av reglar du må fylgje dersom du vil ha ein konto på denne Mastodontenaren:' see_whats_happening: Sjå kva som skjer server_stats: 'Tenarstatistikk:' source_code: Kjeldekode status_count_before: Som skreiv + tagline: Desentralisert sosialt nettverk terms: Brukarvilkår unavailable_content: Utilgjengeleg innhald unavailable_content_description: @@ -99,6 +101,10 @@ nn: new_email: Ny e-post submit: Byt e-post title: Byt e-post for %{username} + change_role: + label: Endre rolle + no_role: Inga rolle + title: Endre rolle for %{username} confirm: Stadfest confirmed: Stadfesta confirming: Stadfestar @@ -170,11 +176,12 @@ nn: reset: Attstill reset_password: Attstill passord resubscribe: Ting på nytt + role: Rolle search: Søk search_same_email_domain: Andre brukarar med same e-postdomene search_same_ip: Andre brukarar med same IP security_measures: - only_password: Bare passord + only_password: Kun passord password_and_2fa: Passord og 2FA sensitized: Merket som følsom shared_inbox_url: Delt Innboks URL diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 7cdf1f0c7..90f2db0c4 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -692,6 +692,8 @@ ru: invite_users_description: Позволяет пользователям приглашать новых людей на сервер manage_announcements: Управление объявлениями manage_announcements_description: Позволяет пользователям управлять объявлениями на сервере + view_dashboard: Открыть панель управления + view_devops: DevOps title: Роли rules: add_new: Добавить правило diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 46472cdcf..4d0cc5118 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -68,6 +68,11 @@ de: with_dns_records: Ein Versuch die DNS-Einträge der Domain aufzulösen wurde unternommen und diese Ergebnisse werden unter anderem auch geblockt featured_tag: name: 'Du möchtest vielleicht einen von diesen benutzen:' + filters: + action: Wählen Sie, welche Aktion ausgeführt werden soll, wenn ein Beitrag dem Filter entspricht + actions: + hide: Den gefilterten Inhalt vollständig ausblenden, als hätte er nie existiert + warn: Den gefilterten Inhalt hinter einer Warnung ausblenden, die den Filtertitel beinhaltet form_challenge: current_password: Du betrittst einen sicheren Bereich imports: @@ -91,6 +96,13 @@ de: name: Du kannst zum Beispiel nur die Groß- und Kleinschreibung der Buchstaben ändern, um es lesbarer zu machen user: chosen_languages: Wenn aktiviert, werden nur Beiträge in den ausgewählten Sprachen auf den öffentlichen Zeitleisten angezeigt + role: Die Rolle kontrolliert welche Berechtigungen ein Benutzer hat + user_role: + color: Die Farbe, die für die Rolle im gesamten UI verwendet wird, als RGB im Hexformat + highlighted: Dies macht die Rolle öffentlich sichtbar + name: Öffentlicher Name der Rolle, wenn die Rolle als Abzeichen angezeigt werden soll + permissions_as_keys: Benutzer mit dieser Rolle haben Zugriff auf... + position: Die höhere Rolle entscheidet über die Konfliktlösung in bestimmten Situationen. Bestimmte Aktionen können nur in Rollen mit geringerer Priorität ausgeführt werden webhook: events: Zu sendende Ereignisse auswählen url: Wo Ereignisse hingesendet werden @@ -181,6 +193,7 @@ de: setting_use_pending_items: Langsamer Modus severity: Schweregrad sign_in_token_attempt: Sicherheitscode + title: Titel type: Art des Imports username: Profilname username_or_email: Profilname oder E-Mail @@ -189,6 +202,10 @@ de: with_dns_records: MX-Einträge und IPs der Domain einbeziehen featured_tag: name: Hashtag + filters: + actions: + hide: Komplett ausblenden + warn: Mit einer Warnung ausblenden interactions: must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge @@ -222,6 +239,14 @@ de: name: Hashtag trendable: Erlaube es diesen Hashtag in den Trends erscheinen zu lassen usable: Beiträge erlauben, diesen Hashtag zu verwenden + user: + role: Rolle + user_role: + color: Abzeichenfarbe + highlighted: Rolle als Abzeichen in Benutzerprofilen anzeigen + name: Name + permissions_as_keys: Berechtigungen + position: Priorität webhook: events: Aktivierte Ereignisse url: Endpunkt-URL diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 30ea0f4be..507650674 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -39,7 +39,7 @@ eo: 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: La filtritaj mesaĝoj malaperos por eterne, eĉ se la filtrilo estas forigita poste + irreversible: La filtritaj mesaĝoj malaperos por eterne, eĉ se la filtrilo poste estas forigita locale: La lingvo de la fasado, de retpoŝtaĵoj, kaj de sciigoj locked: Vi devos aprobi ĉiun peton de sekvado mane password: Uzu almenaŭ 8 signojn diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 582295abb..3128209e8 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -102,6 +102,7 @@ es-MX: highlighted: Esto hace que el rol sea públicamente visible name: Nombre público del rol, si el rol se establece para que se muestre como una insignia permissions_as_keys: Los usuarios con este rol tendrán acceso a... + position: Un rol superior decide la resolución de conflictos en ciertas situaciones. Ciertas acciones sólo pueden llevarse a cabo en roles con menor prioridad webhook: events: Seleccionar eventos para enviar url: Donde los eventos serán enviados diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 678ce7291..8962f0b5d 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -89,6 +89,9 @@ fi: name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi user: chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla + webhook: + events: Valitse lähetettävät tapahtumat + url: Mihin tapahtumat lähetetään labels: account: fields: @@ -150,6 +153,7 @@ fi: phrase: Avainsana tai lause setting_advanced_layout: Ota käyttöön edistynyt web käyttöliittymä setting_aggregate_reblogs: Ryhmitä boostaukset aikajanalla + setting_always_send_emails: Lähetä aina sähköposti-ilmoituksia setting_auto_play_gif: Toista GIF-animaatiot automaattisesti setting_boost_modal: Kysy vahvistusta ennen buustausta setting_crop_images: Rajaa kuvat avaamattomissa tuuttauksissa 16:9 kuvasuhteeseen @@ -175,6 +179,7 @@ fi: setting_use_pending_items: Hidastila severity: Vakavuus sign_in_token_attempt: Turvakoodi + title: Otsikko type: Tietojen laji username: Käyttäjänimi username_or_email: Käyttäjänimi tai sähköposti @@ -183,6 +188,10 @@ fi: with_dns_records: Sisällytä toimialueen MX tietueet ja IP-osoite featured_tag: name: Aihetunniste + filters: + actions: + hide: Piilota kokonaan + warn: Piilota varoituksella interactions: must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa @@ -216,6 +225,17 @@ fi: name: Aihetunniste trendable: Salli tämän aihetunnisteen näkyä trendeissä usable: Salli postauksien käyttää tätä aihetunnistetta + user: + role: Rooli + user_role: + color: Merkin väri + highlighted: Näyttä rooli merkkinä käyttäjäprofiileissa + name: Nimi + permissions_as_keys: Oikeudet + position: Prioriteetti + webhook: + events: Tapahtumat käytössä + url: Päätepisteen URL 'no': Ei recommended: Suositeltu required: diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 63199e2cd..7165cb243 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -68,6 +68,11 @@ gd: with_dns_records: Thèid oidhirp a dhèanamh air fuasgladh clàran DNS na h-àrainne a chaidh a thoirt seachad agus thèid na toraidhean a bhacadh cuideachd featured_tag: name: 'Mholamaid fear dhe na tagaichean seo:' + filters: + action: Tagh na thachras nuair a bhios post a’ maidseadh na criathraige + actions: + hide: Falaich an t-susbaint chriathraichte uile gu lèir mar nach robh i ann idir + warn: Falaich an t-susbaint chriathraichte air cùlaibh rabhaidh a dh’innseas tiotal na criathraige form_challenge: current_password: Tha thu a’ tighinn a-steach gu raon tèarainte imports: @@ -91,6 +96,16 @@ gd: name: Mar eisimpleir, ’s urrainn dhut measgachadh de litrichean mòra ’s beaga a chleachdadh ach an gabh a leughadh nas fhasa user: chosen_languages: Nuair a bhios cromag ris, cha nochd ach postaichean sna cànain a thagh thu air loidhnichean-ama poblach + role: Stiùiridh an dreuchd dè na ceadan a bhios aig cleachdaiche + user_role: + color: An datha a bhios air an dreuchd air feadh na h-eadar-aghaidh, ’na RGB san fhòrmat sia-dheicheach + highlighted: Le seo, chithear an dreuchd gu poblach + name: Ainm poblach na dreuchd ma chaidh a suidheachadh gun nochd i na baidse + permissions_as_keys: Gheibh na cleachdaichean aig a bheil an dreuchd seo inntrigeadh dha… + position: Ma tha còmhstri ann, buannaichidh an dreuchd as àirde ann an cuid a shuidheachaidhean. Tha gnìomhan sònraichte ann nach urrainn ach dreuchdan le prìomhachas ìosail a ghabhail + webhook: + events: Tagh na tachartasan a thèid a chur + url: Far an dèid na tachartasan a chur labels: account: fields: @@ -178,6 +193,7 @@ gd: setting_use_pending_items: Am modh slaodach severity: Donad sign_in_token_attempt: Còd-tèarainteachd + title: Tiotal type: Seòrsa an ion-phortaidh username: Ainm-cleachdaiche username_or_email: Ainm-cleachdaiche no post-d @@ -186,6 +202,10 @@ gd: with_dns_records: Gabh a-steach clàran MX agus IPan na h-àrainne featured_tag: name: Taga hais + filters: + actions: + hide: Falaich uile gu lèir + warn: Falaich le rabhadh interactions: must_be_follower: Bac na brathan nach eil o luchd-leantainn must_be_following: Bac na brathan o dhaoine air nach lean thu @@ -219,6 +239,17 @@ gd: name: Taga hais trendable: Leig leis an taga hais seo gun nochd e am measg nan treandaichean usable: Leig le postaichean an taga hais seo a chleachdadh + user: + role: Dreuchd + user_role: + color: Dathan na baidse + highlighted: Seall an dreuchd ’na baidse air pròifilean nan cleachdaichean + name: Ainm + permissions_as_keys: Ceadan + position: Prìomhachas + webhook: + events: Na tachartas an comas + url: URL na puinge-deiridh 'no': Chan eil recommended: Molta required: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 00f8e762c..cd9811f3c 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -211,7 +211,7 @@ nl: notification_emails: appeal: Iemand heeft bezwaar ingediend tegen een beslissing van een moderator digest: Periodiek e-mails met een samenvatting versturen - favourite: Wanneer iemand jouw bericht aan diens favorieten heeft toegevoegd + favourite: Wanneer iemand jouw bericht als favoriet markeert follow: Wanneer iemand jou is gaan volgen follow_request: Wanneer iemand jou wil volgen mention: Wanneer iemand jou heeft vermeld diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 0e9988654..71734509b 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -85,6 +85,10 @@ nn: name: Du kan berre endra bruken av store/små bokstavar, t. d. for å gjera det meir leseleg user: chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner + role: Rolla kontrollerer kva tilgangar brukaren har + user_role: + highlighted: Dette gjer rolla synleg offentleg + permissions_as_keys: Brukarar med denne rolla vil ha tilgang til... labels: account: fields: @@ -144,6 +148,7 @@ nn: phrase: Nykelord eller frase setting_advanced_layout: Skruv på det avanserte nettgrensesnittet setting_aggregate_reblogs: Gruppeframhevingar på tidsliner + setting_always_send_emails: Alltid send epostvarsel setting_auto_play_gif: Spel av animerte GIF-ar automatisk setting_boost_modal: Vis stadfesting før framheving setting_crop_images: Skjer bilete i ikkje-utvida tut til 16x9 @@ -169,6 +174,7 @@ nn: setting_use_pending_items: Saktemodus severity: Alvorsgrad sign_in_token_attempt: Trygdenykel + title: Tittel type: Importtype username: Brukarnamn username_or_email: Brukarnamn eller E-post @@ -177,6 +183,10 @@ nn: with_dns_records: Ha med MX-recordar og IP-ar til domenet featured_tag: name: Emneknagg + filters: + actions: + hide: Gøym totalt + warn: Gøym med ei advarsel interactions: must_be_follower: Gøym varslingar frå folk som ikkje fylgjer deg must_be_following: Gøym varslingar frå folk du ikkje fylgjer @@ -200,6 +210,7 @@ nn: mention: Send e-post når nokon nemner deg pending_account: Send e-post når ein ny konto treng gjennomgang reblog: Send e-post når nokon framhevar statusen din + report: Ny rapport er sendt rule: text: Regler tag: @@ -207,6 +218,13 @@ nn: name: Emneknagg trendable: Tillat denne emneknaggen til å synast under trendar usable: Gje tut lov til å nytta denne emneknaggen + user: + role: Rolle + user_role: + name: Namn + position: Prioritet + webhook: + url: Endepunkts-URL 'no': Nei recommended: Tilrådt required: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index ffe41dd14..b144b29d5 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -3,7 +3,7 @@ ru: simple_form: hints: account_alias: - acct: Укажите имя_пользователя@домен учётной записи, с которой вы собираетесь мигрировать + acct: Укажите ник@домен учётной записи, с которой вы собираетесь мигрировать account_migration: acct: Укажите имя_пользователя@домен учётной записи, на которую вы собираетесь мигрировать account_warning_preset: @@ -44,7 +44,7 @@ ru: inbox_url: Копировать URL с главной страницы ретранслятора, который вы хотите использовать irreversible: Отфильтрованные посты будут утеряны навсегда, даже если в будущем фильтр будет убран locale: Язык интерфейса, e-mail писем и push-уведомлений - locked: Подписчиков нужно будет подтверждать вручную. + locked: Вручную контролируйте, кто может подписываться на вас, утверждая запросы на подписку password: Укажите не менее 8 символов. phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании поста scopes: Какие API приложению будет позволено использовать. Если вы выберете самый верхний, нижестоящие будут выбраны автоматически. @@ -99,6 +99,8 @@ ru: role: Роль определяет, какие разрешения есть у пользователя user_role: color: Цвет, который будет использоваться для роли в интерфейсе (UI), как RGB в формате HEX + highlighted: Это действие сделает роль публичной + name: Публичное имя роли, если роль настроена на отображение в виде значка permissions_as_keys: Пользователи с этой ролью будут иметь доступ... position: Повышение роли разрешают конфликты интересов в некоторых ситуациях. Некоторые действия могут выполняться только на ролях с более низким приоритетом webhook: @@ -240,6 +242,8 @@ ru: user: role: Роль user_role: + color: Цвет значка + highlighted: Отображать роль в качестве значка в профилях пользователей name: Название permissions_as_keys: Разрешения position: Приоритет diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index b032295ba..2a31ea9c2 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -64,15 +64,15 @@ th: domain_allow: domain: โดเมนนี้จะสามารถดึงข้อมูลจากเซิร์ฟเวอร์นี้และจะประมวลผลและจัดเก็บข้อมูลขาเข้าจากโดเมน email_domain_block: - domain: อาจเป็นชื่อโดเมนที่แสดงในที่อยู่อีเมลหรือทะเบียน MX ที่ใช้อยู่ พวกเขาอาจจะได้รับการตรวจสอบเมื่อมีการสมัคร + domain: สิ่งนี้สามารถเป็นชื่อโดเมนที่ปรากฏในที่อยู่อีเมลหรือระเบียน MX ที่โดเมนใช้ จะตรวจสอบโดเมนเมื่อลงทะเบียน with_dns_records: จะทำการพยายามแปลงที่อยู่ระเบียน DNS ของโดเมนที่กำหนดและจะปิดกั้นผลลัพธ์เช่นกัน featured_tag: name: 'คุณอาจต้องการใช้หนึ่งในนี้:' filters: - action: เลือกการดำเนินการเมื่อโพสต์ตรงกับตัวกรอง + action: เลือกว่าการกระทำใดที่จะทำเมื่อโพสต์ตรงกับตัวกรอง actions: - hide: ซ่อนเนื้อหาที่ถูกกรองโดยสิ้นเชิง ทำตัวราวกับว่าไม่มีอยู่จริง - warn: ซ่อนเนื้อหาที่ถูกกรองไว้ด้านหลังคำเตือนที่กล่าวถึงชื่อตัวกรอง + hide: ซ่อนเนื้อหาที่กรองอยู่อย่างสมบูรณ์ ทำเสมือนว่าไม่มีเนื้อหาอยู่ + warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง form_challenge: current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย imports: @@ -105,7 +105,7 @@ th: position: บทบาทที่สูงขึ้นตัดสินใจการแก้ปัญหาข้อขัดแย้งในบางสถานการณ์ การกระทำบางอย่างสามารถทำได้เฉพาะกับบทบาทที่มีระดับความสำคัญต่ำกว่าเท่านั้น webhook: events: เลือกเหตุการณ์ที่จะส่ง - url: จะส่งเหตุการณ์ไปยัง + url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง labels: account: fields: @@ -205,7 +205,7 @@ th: filters: actions: hide: ซ่อนอย่างสมบูรณ์ - warn: ซ่อนพร้อมคำเตือน + warn: ซ่อนด้วยคำเตือน interactions: must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 5fefb4e09..7b02930c2 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -110,6 +110,11 @@ sk: new_email: Nový email submit: Zmeň email title: Zmeň email pre %{username} + change_role: + changed_msg: Postavenie úspešne zmenené! + label: Zmeň pozíciu + no_role: Žiadna pozícia + title: Zmeň pozíciu pre %{username} confirm: Potvrď confirmed: Potvrdený confirming: Potvrdzujúci @@ -146,6 +151,7 @@ sk: active: Aktívny/a all: Všetko pending: Čakajúci + silenced: Obmedzený suspended: Vylúčený/á title: Moderácia moderation_notes: Moderátorské poznámky @@ -153,6 +159,7 @@ sk: most_recent_ip: Posledná IP adresa no_account_selected: Nedošlo k žiadnému pozmeneniu účtov, keďže žiadne neboli vybrané no_limits_imposed: Nie sú stanovené žiadné obmedzenia + no_role_assigned: Žiadne postavenie nepriradené not_subscribed: Neodoberá pending: Vyžaduje posúdenie perform_full_suspension: Vylúč @@ -171,6 +178,7 @@ sk: reset: Resetuj reset_password: Obnov heslo resubscribe: Znovu odoberaj + role: Postavenie search: Hľadaj search_same_email_domain: Iní užívatelia s tou istou emailovou doménou search_same_ip: Ostatní užívatelia s rovnakou IP adresou @@ -347,7 +355,9 @@ sk: domain: Doména new: create: Pridaj doménu + resolve: Preveď doménu title: Nový email na zablokovanie + resolved_through_html: Prevedená cez %{domain} title: Blokované emailové adresy follow_recommendations: description_html: "Odporúčania na sledovanie pomáhaju novým užívateľom rýchlo nájsť zaujímavý obsah. Ak užívateľ zatiaľ nedostatočne interagoval s ostatnými aby si vyformoval personalizované odporúčania na sledovanie, tak mu budú odporúčané tieto účty. Sú prepočítavané na dennej báze z mixu účtov s nedávnym najvyšším záujmom a najvyšším počtom lokálnych sledujúcich pre daný jazyk." @@ -369,7 +379,11 @@ sk: policies: reject_media: Zamietni médiá suspend: Vylúč + policy: Zásady reason: Verejné odôvodnenie + title: Zásady o obsahu + dashboard: + instance_accounts_dimension: Najsledovanejšie účty delivery: all: Všetko unavailable: Nedostupné @@ -467,6 +481,23 @@ sk: unassign: Odober unresolved: Nevyriešené updated_at: Aktualizované + view_profile: Zobraz profil + roles: + add_new: Pridaj postavenie + assigned_users: + few: "%{count} užívateľov" + many: "%{count} užívateľov" + one: "%{count} užívateľ" + other: "%{count} užívatelia" + categories: + administration: Spravovanie + invites: Pozvánky + edit: Uprav postavenie %{name} + privileges: + administrator: Správca + invite_users: Pozvi užívateľov + manage_roles: Spravuj postavenia + title: Postavenia rules: empty: Žiadne pravidlá servera ešte neboli určené. title: Serverové pravidlá diff --git a/config/locales/th.yml b/config/locales/th.yml index 28ffeb462..ef5e5e38e 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -457,11 +457,11 @@ th: resolve: แปลงที่อยู่โดเมน title: ปิดกั้นโดเมนอีเมลใหม่ no_email_domain_block_selected: ไม่มีการเปลี่ยนแปลงการปิดกั้นโดเมนอีเมลเนื่องจากไม่มีการเลือก - resolved_dns_records_hint_html: ชื่อโดเมนจะแก้ไขเป็นโดเมน MX ต่อไปนี้ ซึ่งแต่ท้ายที่สุดแล้วคุณจะต้องรับผิดชอบในการยอมรับอีเมล การบล็อกโดเมน MX จะบล็อกการลงชื่อสมัครใช้จากที่อยู่อีเมลใดๆ ที่ใช้โดเมน MX เดียวกัน ถึงแม้ว่าชื่อโดเมนที่มองเห็นได้นั้นจะต่างกัน ระวังอย่าบล็อกผู้ให้บริการอีเมลรายใหญ่ + resolved_dns_records_hint_html: ชื่อโดเมนแปลงที่อยู่เป็นโดเมน MX ดังต่อไปนี้ ซึ่งท้ายที่สุดแล้วจะรับผิดชอบสำหรับการยอมรับอีเมล การปิดกั้นโดเมน MX จะปิดกั้นการลงทะเบียนจากที่อยู่อีเมลใด ๆ ซึ่งใช้โดเมน MX เดียวกัน แม้ว่าชื่อโดเมนที่ปรากฏจะแตกต่างกัน ระวังอย่าปิดกั้นผู้ให้บริการอีเมลรายใหญ่ resolved_through_html: แปลงที่อยู่ผ่าน %{domain} title: โดเมนอีเมลที่ปิดกั้นอยู่ follow_recommendations: - description_html: "จะทำตามคำแนะนำช่วยให้ผู้ใช้ใหม่ให้พบเนื้อหาที่น่าสนใจได้อย่างรวดเร็ว เมื่อผู้ใช้ไม่ได้โต้ตอบใดๆกับผู้อื่นมากพอที่จะสร้างคำแนะนำส่วนบุคคลให้กดติดตาม ขอแนะนำให้ใช้บัญชีเหล่านี้แทน พวกเขาจะคำนวณใหม่ทุกๆวันจากบัญชีต่างๆ ที่มีการมีส่วนร่วมล่าสุดและจำนวนผู้ติดตามในพื้นที่สูงสุดสำหรับภาษาที่คุณกำหนดไว้" + description_html: "คำแนะนำการติดตามช่วยให้ผู้ใช้ใหม่ค้นหาเนื้อหาที่น่าสนใจได้อย่างรวดเร็ว เมื่อผู้ใช้ไม่ได้โต้ตอบกับผู้อื่นมากพอที่จะสร้างคำแนะนำการติดตามส่วนบุคคล จะแนะนำบัญชีเหล่านี้แทน จะคำนวณคำแนะนำใหม่เป็นประจำทุกวันจากบัญชีต่าง ๆ ที่มีการมีส่วนร่วมล่าสุดสูงสุดและจำนวนผู้ติดตามในเซิร์ฟเวอร์สูงสุดสำหรับภาษาที่กำหนด" language: สำหรับภาษา status: สถานะ suppress: ระงับคำแนะนำการติดตาม @@ -470,7 +470,14 @@ th: unsuppress: คืนค่าคำแนะนำการติดตาม instances: availability: + description_html: + other: หากการจัดส่งไปยังโดเมนล้มเหลวเป็นเวลา %{count} วันที่แตกต่างกัน โดยไม่สำเร็จ จะไม่ทำการพยายามจัดส่งเพิ่มเติมเว้นแต่จะได้รับการจัดส่ง จาก โดเมน + failure_threshold_reached: ถึงค่าเกณฑ์ความล้มเหลวเมื่อ %{date} + failures_recorded: + other: ความพยายามที่ล้มเหลวเป็นเวลา %{count} วันที่แตกต่างกัน + no_failures_recorded: ไม่มีความล้มเหลวในระเบียน title: ความพร้อมใช้งาน + warning: ความพยายามล่าสุดในการเชื่อมต่อกับเซิร์ฟเวอร์นี้ไม่สำเร็จ back_to_all: ทั้งหมด back_to_limited: จำกัดอยู่ back_to_warning: คำเตือน @@ -505,6 +512,8 @@ th: unavailable: ไม่พร้อมใช้งาน delivery_available: มีการจัดส่ง delivery_error_days: วันที่มีข้อผิดพลาดการจัดส่ง + delivery_error_hint: หากไม่สามารถทำการจัดส่งได้เป็นเวลา %{count} วัน จะทำเครื่องหมายโดเมนว่าจัดส่งไม่ได้โดยอัตโนมัติ + destroyed_msg: ตอนนี้จัดคิวข้อมูลจาก %{domain} สำหรับการลบในเร็ว ๆ นี้แล้ว empty: ไม่พบโดเมน known_accounts: other: "%{count} บัญชีที่รู้จัก" @@ -515,12 +524,14 @@ th: private_comment: ความคิดเห็นส่วนตัว public_comment: ความคิดเห็นสาธารณะ purge: ล้างข้อมูล + purge_description_html: หากคุณเชื่อว่าโดเมนนี้ออฟไลน์อย่างถาวร คุณสามารถลบระเบียนบัญชีและข้อมูลที่เกี่ยวข้องทั้งหมดจากโดเมนนี้จากที่เก็บข้อมูลของคุณ นี่อาจใช้เวลาสักครู่ title: การติดต่อกับภายนอก total_blocked_by_us: ปิดกั้นโดยเรา total_followed_by_them: ติดตามโดยเขา total_followed_by_us: ติดตามโดยเรา total_reported: รายงานเกี่ยวกับเขา total_storage: ไฟล์แนบสื่อ + totals_time_period_hint_html: ยอดรวมที่แสดงด้านล่างรวมข้อมูลสำหรับเวลาทั้งหมด invites: deactivate_all: ปิดใช้งานทั้งหมด filter: @@ -549,6 +560,7 @@ th: relays: add_new: เพิ่มรีเลย์ใหม่ delete: ลบ + description_html: "รีเลย์การติดต่อกับภายนอก เป็นเซิร์ฟเวอร์ตัวกลางที่แลกเปลี่ยนโพสต์สาธารณะจำนวนมากระหว่างเซิร์ฟเวอร์ที่บอกรับและเผยแพร่ไปยังรีเลย์ รีเลย์สามารถช่วยให้เซิร์ฟเวอร์ขนาดเล็กและขนาดกลางค้นพบเนื้อหาจากจักรวาลสหพันธ์ ซึ่งมิฉะนั้นจะต้องให้ผู้ใช้ในเซิร์ฟเวอร์ติดตามผู้คนอื่น ๆ ในเซิร์ฟเวอร์ระยะไกลด้วยตนเอง" disable: ปิดใช้งาน disabled: ปิดใช้งานอยู่ enable: เปิดใช้งาน @@ -558,6 +570,7 @@ th: pending: กำลังรอการอนุมัติของรีเลย์ save_and_enable: บันทึกแล้วเปิดใช้งาน setup: ตั้งค่าการเชื่อมต่อแบบรีเลย์ + signatures_not_enabled: รีเลย์จะทำงานไม่ถูกต้องขณะที่มีการเปิดใช้งานโหมดปลอดภัยหรือโหมดการติดต่อกับภายนอกแบบจำกัด status: สถานะ title: รีเลย์ report_notes: @@ -571,9 +584,12 @@ th: action_log: รายการบันทึกการตรวจสอบ action_taken_by: ใช้การกระทำโดย actions: + delete_description_html: จะลบโพสต์ที่รายงานและจะบันทึกการดำเนินการเพื่อช่วยให้คุณเลื่อนระดับการละเมิดในอนาคตโดยบัญชีเดียวกัน + mark_as_sensitive_description_html: จะทำเครื่องหมายสื่อในโพสต์ที่รายงานว่าละเอียดอ่อนและจะบันทึกการดำเนินการเพื่อช่วยให้คุณเลื่อนระดับการละเมิดในอนาคตโดยบัญชีเดียวกัน other_description_html: ดูตัวเลือกเพิ่มเติมสำหรับการควบคุมพฤติกรรมของบัญชีและปรับแต่งการสื่อสารไปยังบัญชีที่รายงาน resolve_description_html: จะไม่ใช้การกระทำกับบัญชีที่รายงาน ไม่มีการบันทึกการดำเนินการ และจะปิดรายงาน actions_description_html: ตัดสินใจว่าการกระทำใดที่จะใช้เพื่อแก้ปัญหารายงานนี้ หากคุณใช้การกระทำที่เป็นการลงโทษกับบัญชีที่รายงาน จะส่งการแจ้งเตือนอีเมลถึงเขา ยกเว้นเมื่อมีการเลือกหมวดหมู่ สแปม + add_to_report: เพิ่มข้อมูลเพิ่มเติมไปยังรายงาน are_you_sure: คุณแน่ใจหรือไม่? assign_to_self: มอบหมายให้ฉัน assigned: ผู้ควบคุมที่ได้รับมอบหมาย @@ -596,6 +612,7 @@ th: create_and_unresolve: เปิดใหม่โดยมีหมายเหตุ delete: ลบ title: หมายเหตุ + notes_description_html: ดูและฝากหมายเหตุถึงผู้ควบคุมอื่น ๆ และตัวคุณเองในอนาคต quick_actions_description_html: 'ดำเนินการอย่างรวดเร็วหรือเลื่อนลงเพื่อดูเนื้อหาที่รายงาน:' remote_user_placeholder: ผู้ใช้ระยะไกลจาก %{instance} reopen: เปิดรายงานใหม่ @@ -623,6 +640,7 @@ th: moderation: การควบคุม special: พิเศษ delete: ลบ + description_html: ด้วย บทบาทผู้ใช้ คุณสามารถปรับแต่งว่าฟังก์ชันและพื้นที่ใดของ Mastodon ที่ผู้ใช้ของคุณสามารถเข้าถึง edit: แก้ไขบทบาท '%{name}' everyone: สิทธิอนุญาตเริ่มต้น permissions_count: @@ -631,18 +649,32 @@ th: administrator: ผู้ดูแล delete_user_data: ลบข้อมูลผู้ใช้ invite_users: เชิญผู้ใช้ + invite_users_description: อนุญาตให้ผู้ใช้เชิญผู้คนใหม่ไปยังเซิร์ฟเวอร์ manage_announcements: จัดการประกาศ + manage_announcements_description: อนุญาตให้ผู้ใช้จัดการประกาศในเซิร์ฟเวอร์ manage_appeals: จัดการการอุทธรณ์ manage_blocks: จัดการการปิดกั้น + manage_blocks_description: อนุญาตให้ผู้ใช้ปิดกั้นผู้ให้บริการอีเมลและที่อยู่ IP manage_custom_emojis: จัดการอีโมจิที่กำหนดเอง + manage_custom_emojis_description: อนุญาตให้ผู้ใช้จัดการอีโมจิที่กำหนดเองในเซิร์ฟเวอร์ manage_federation: จัดการการติดต่อกับภายนอก + manage_federation_description: อนุญาตให้ผู้ใช้ปิดกั้นหรืออนุญาตการติดต่อกับภายนอกกับโดเมนอื่น ๆ และควบคุมความสามารถในการจัดส่ง manage_invites: จัดการคำเชิญ + manage_invites_description: อนุญาตให้ผู้ใช้เรียกดูและปิดใช้งานลิงก์เชิญ manage_reports: จัดการรายงาน manage_roles: จัดการบทบาท manage_rules: จัดการกฎ + manage_rules_description: อนุญาตให้ผู้ใช้เปลี่ยนกฎของเซิร์ฟเวอร์ manage_settings: จัดการการตั้งค่า + manage_settings_description: อนุญาตให้ผู้ใช้เปลี่ยนการตั้งค่าไซต์ + manage_taxonomies: จัดการอนุกรมวิธาน + manage_taxonomies_description: อนุญาตให้ผู้ใช้ตรวจทานเนื้อหาที่กำลังนิยมและอัปเดตการตั้งค่าแฮชแท็ก manage_user_access: จัดการการเข้าถึงของผู้ใช้ manage_users: จัดการผู้ใช้ + view_audit_log: ดูรายการบันทึกการตรวจสอบ + view_audit_log_description: อนุญาตให้ผู้ใช้ดูประวัติการกระทำการดูแลในเซิร์ฟเวอร์ + view_dashboard: ดูแดชบอร์ด + view_dashboard_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ดและเมตริกต่าง ๆ view_devops_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ด Sidekiq และ pgHero title: บทบาท rules: @@ -941,6 +973,7 @@ th: confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ functional: บัญชีของคุณทำงานได้อย่างเต็มที่ pending: ใบสมัครของคุณกำลังรอดำเนินการตรวจทานโดยพนักงานของเรา นี่อาจใช้เวลาสักครู่ คุณจะได้รับอีเมลหากใบสมัครของคุณได้รับการอนุมัติ + redirecting_to: บัญชีของคุณไม่ได้ใช้งานเนื่องจากบัญชีกำลังเปลี่ยนเส้นทางไปยัง %{acct} ในปัจจุบัน view_strikes: ดูการดำเนินการที่ผ่านมากับบัญชีของคุณ too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง trouble_logging_in: มีปัญหาในการเข้าสู่ระบบ? @@ -1008,6 +1041,7 @@ th: strikes: action_taken: การกระทำที่ใช้ appeal: อุทธรณ์ + appeal_approved: อุทธรณ์การดำเนินการนี้สำเร็จและไม่มีผลบังคับอีกต่อไป appeal_rejected: ปฏิเสธการอุทธรณ์แล้ว appeal_submitted_at: ส่งการอุทธรณ์แล้ว appeals: @@ -1119,6 +1153,7 @@ th: overwrite: เขียนทับ overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่ preface: คุณสามารถนำเข้าข้อมูลที่คุณได้ส่งออกจากเซิร์ฟเวอร์อื่น เช่น รายการผู้คนที่คุณกำลังติดตามหรือกำลังปิดกั้น + success: อัปโหลดข้อมูลของคุณสำเร็จและจะได้รับการประมวลผลในเวลาที่ครบกำหนด types: blocking: รายการปิดกั้น bookmarks: ที่คั่นหน้า @@ -1170,6 +1205,7 @@ th: cancel_explanation: การยกเลิกการเปลี่ยนเส้นทางจะเปิดใช้งานบัญชีปัจจุบันของคุณใหม่ แต่จะไม่นำผู้ติดตามที่ได้รับการย้ายไปยังบัญชีนั้นกลับมา cancelled_msg: ยกเลิกการเปลี่ยนเส้นทางสำเร็จ errors: + already_moved: เป็นบัญชีเดียวกันกับที่คุณได้ย้ายไปแล้ว missing_also_known_as: ไม่ใช่นามแฝงของบัญชีนี้ move_to_self: ไม่สามารถเป็นบัญชีปัจจุบัน not_found: ไม่พบ @@ -1298,6 +1334,7 @@ th: status: สถานะบัญชี remote_follow: acct: ป้อน username@domain ของคุณที่คุณต้องการกระทำจาก + missing_resource: ไม่พบ URL การเปลี่ยนเส้นทางที่จำเป็นสำหรับบัญชีของคุณ no_account_html: ไม่มีบัญชี? คุณสามารถ ลงทะเบียนที่นี่ proceed: ดำเนินการต่อเพื่อติดตาม prompt: 'คุณกำลังจะติดตาม:' @@ -1318,6 +1355,7 @@ th: content_warning: 'คำเตือนเนื้อหา:' descriptions: account: โพสต์สาธารณะจาก @%{acct} + tag: 'โพสต์สาธารณะที่ได้รับการแท็ก #%{hashtag}' scheduled_statuses: too_soon: วันที่ตามกำหนดการต้องอยู่ในอนาคต sessions: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index b471cc153..743d9b608 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -915,7 +915,7 @@ vi: sensitive: đánh dấu tài khoản của họ là nhạy cảm silence: hạn chế tài khoản của họ suspend: vô hiệu hóa tài khoản của họ - body: "%{target} đã khiếu nại quyết định kiểm duyệt từ %{action_taken_by} vào %{date}, vì %{type}. Họ cho biết:" + body: "%{target} đã khiếu nại quyết định kiểm duyệt bởi %{action_taken_by} vào %{date}, vì %{type}. Họ cho biết:" next_steps: Bạn có thể chấp nhận kháng cáo để hủy bỏ kiểm duyệt, hoặc bỏ qua. subject: "%{username} đang khiếu nại quyết định kiểm duyệt trên %{instance}" new_pending_account: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 12b371bf3..0bf1833f2 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -692,6 +692,7 @@ zh-CN: view_dashboard: 查看仪表板 view_dashboard_description: 允许用户访问仪表盘和各种指标 view_devops: 开发运维 + view_devops_description: 允许用户访问 Sidekiq 和 pgHero 仪表板 title: 角色 rules: add_new: 添加规则 @@ -893,6 +894,7 @@ zh-CN: description_html: "webhook 使Mastodon能够推送 关于所选事件的实时通知 到您自己的应用程序。 所以您的应用程序可以自动触发反应 。" disable: 禁用 disabled: 已禁用 + edit: 编辑端点 empty: 您尚未配置任何Web 钩子端点。 enable: 启用 enabled: 活跃 From ac27972d9df7309993170de9931b9f76ea244a77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:40:25 +0900 Subject: [PATCH 034/280] Bump postcss from 8.4.14 to 8.4.16 (#18952) Bumps [postcss](https://github.com/postcss/postcss) from 8.4.14 to 8.4.16. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.14...8.4.16) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 90f7af384..1d511b79c 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "offline-plugin": "^5.0.7", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", - "postcss": "^8.4.14", + "postcss": "^8.4.16", "postcss-loader": "^3.0.0", "postcss-object-fit-images": "^1.1.2", "promise.prototype.finally": "^3.1.3", diff --git a/yarn.lock b/yarn.lock index 1369a9b32..cfcc1e692 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8796,10 +8796,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15, postcss@^8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== +postcss@^8.2.15, postcss@^8.4.14, postcss@^8.4.16: + version "8.4.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" From 334acf93796671f28238a3a1e7a73e5bf3f6bcba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:41:35 +0900 Subject: [PATCH 035/280] Bump sass from 1.54.0 to 1.54.3 (#18951) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.0 to 1.54.3. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.0...1.54.3) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 1d511b79c..f88133562 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.0", + "sass": "^1.54.3", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index cfcc1e692..d29772bb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9773,10 +9773,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.0: - version "1.54.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.0.tgz#24873673265e2a4fe3d3a997f714971db2fba1f4" - integrity sha512-C4zp79GCXZfK0yoHZg+GxF818/aclhp9F48XBu/+bm9vXEVAYov9iU3FBVRMq3Hx3OA4jfKL+p2K9180mEh0xQ== +sass@^1.54.3: + version "1.54.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.3.tgz#37baa2652f7f1fdadb73240ee9a2b9b81fabb5c4" + integrity sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 2d6b41fe30dca92fd35d491ae4bf66a9fd5805a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:42:03 +0900 Subject: [PATCH 036/280] Bump @testing-library/jest-dom from 5.16.4 to 5.16.5 (#18947) Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.16.4 to 5.16.5. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v5.16.4...v5.16.5) --- updated-dependencies: - dependency-name: "@testing-library/jest-dom" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 32 ++++++++++---------------------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index f88133562..564b8b3f5 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.18.9", - "@testing-library/jest-dom": "^5.16.4", + "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", "babel-jest": "^28.1.3", "eslint": "^7.32.0", diff --git a/yarn.lock b/yarn.lock index d29772bb2..d2c61b112 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@adobe/css-tools@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" + integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g== + "@ampproject/remapping@^2.1.0": version "2.1.2" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" @@ -1638,16 +1643,16 @@ lz-string "^1.4.4" pretty-format "^27.0.2" -"@testing-library/jest-dom@^5.16.4": - version "5.16.4" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd" - integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA== +"@testing-library/jest-dom@^5.16.5": + version "5.16.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" + integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== dependencies: + "@adobe/css-tools" "^4.0.1" "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" aria-query "^5.0.0" chalk "^3.0.0" - css "^3.0.0" css.escape "^1.5.1" dom-accessibility-api "^0.5.6" lodash "^4.17.15" @@ -3759,15 +3764,6 @@ css.escape@^1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -10137,14 +10133,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" From b794addc4a39e6cde38aa191e4cfc22f5d4ce59f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:43:03 +0900 Subject: [PATCH 037/280] Bump json-ld from 3.2.2 to 3.2.3 (#18950) Bumps [json-ld](https://github.com/ruby-rdf/json-ld) from 3.2.2 to 3.2.3. - [Release notes](https://github.com/ruby-rdf/json-ld/releases) - [Commits](https://github.com/ruby-rdf/json-ld/compare/3.2.2...3.2.3) --- updated-dependencies: - dependency-name: json-ld dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 03c0f297b..accf9ebe7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -327,13 +327,13 @@ GEM activesupport (>= 4.2) aes_key_wrap bindata - json-ld (3.2.2) + json-ld (3.2.3) htmlentities (~> 4.3) json-canonicalization (~> 0.3) link_header (~> 0.0, >= 0.0.8) multi_json (~> 1.15) rack (~> 2.2) - rdf (~> 3.2) + rdf (~> 3.2, >= 3.2.9) json-ld-preloaded (3.2.0) json-ld (~> 3.2) rdf (~> 3.2) @@ -527,7 +527,7 @@ GEM thor (~> 1.0) rainbow (3.1.1) rake (13.0.6) - rdf (3.2.8) + rdf (3.2.9) link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.5.0) rdf (~> 3.2) From 1abf2a05849361c7e7c38f1aa8ce6206f8b03a93 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:43:22 +0900 Subject: [PATCH 038/280] Bump oj from 3.13.19 to 3.13.20 (#18948) Bumps [oj](https://github.com/ohler55/oj) from 3.13.19 to 3.13.20. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.19...v3.13.20) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index accf9ebe7..debce991b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.19) + oj (3.13.20) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From c384430ba03d3417d05d4cd2991d89a505ab51df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:50:50 +0900 Subject: [PATCH 039/280] Bump capistrano from 3.17.0 to 3.17.1 (#18949) * Bump capistrano from 3.17.0 to 3.17.1 Bumps [capistrano](https://github.com/capistrano/capistrano) from 3.17.0 to 3.17.1. - [Release notes](https://github.com/capistrano/capistrano/releases) - [Commits](https://github.com/capistrano/capistrano/compare/v3.17.0...v3.17.1) --- updated-dependencies: - dependency-name: capistrano dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * 3.17.1 Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yamagishi Kazutoshi --- Gemfile.lock | 10 +++++----- config/deploy.rb | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index debce991b..b08a7ce2e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -69,7 +69,7 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) aes_key_wrap (1.1.0) - airbrussh (1.4.0) + airbrussh (1.4.1) sshkit (>= 1.6.1, != 1.7.0) android_key_attestation (0.3.0) annotate (3.2.0) @@ -129,7 +129,7 @@ GEM bundler (>= 1.2.0, < 3) thor (~> 1.0) byebug (11.1.3) - capistrano (3.17.0) + capistrano (3.17.1) airbrussh (>= 1.0.0) i18n rake (>= 10.0.0) @@ -401,9 +401,9 @@ GEM multi_json (1.15.0) multipart-post (2.1.1) net-ldap (0.17.1) - net-scp (3.0.0) - net-ssh (>= 2.6.5, < 7.0.0) - net-ssh (6.1.0) + net-scp (4.0.0.rc1) + net-ssh (>= 2.6.5, < 8.0.0) + net-ssh (7.0.1) nio4r (2.5.8) nokogiri (1.13.8) mini_portile2 (~> 2.8.0) diff --git a/config/deploy.rb b/config/deploy.rb index 8a2316b57..2bdb11595 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -lock '3.17.0' +lock '3.17.1' set :repo_url, ENV.fetch('REPO', 'https://github.com/mastodon/mastodon.git') set :branch, ENV.fetch('BRANCH', 'master') From 9f61f22a3b93115763aa7b21c19c437698c34cf8 Mon Sep 17 00:00:00 2001 From: Daniel Jakots Date: Sun, 14 Aug 2022 20:47:33 -0400 Subject: [PATCH 040/280] Update node to 16.16.0 (#18790) See https://nodejs.org/en/blog/vulnerability/july-2022-security-releases/ --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6180e0796..c79618da9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ SHELL ["/bin/bash", "-c"] RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections # Install Node v16 (LTS) -ENV NODE_VER="16.15.1" +ENV NODE_VER="16.16.0" RUN ARCH= && \ dpkgArch="$(dpkg --print-architecture)" && \ case "${dpkgArch##*-}" in \ From 113dd90aa3e8dd930fa343a2dea52e64bf63eb06 Mon Sep 17 00:00:00 2001 From: zunda Date: Sun, 14 Aug 2022 16:39:58 -1000 Subject: [PATCH 041/280] Bump Ruby version from 3.0.3 to 3.0.4 (#18028) https://www.ruby-lang.org/en/news/2022/04/12/ruby-3-0-4-released/ --- .ruby-version | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.ruby-version b/.ruby-version index 75a22a26a..b0f2dcb32 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.0.3 +3.0.4 diff --git a/Dockerfile b/Dockerfile index c79618da9..7757bd0e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ RUN ARCH= && \ mv node-v$NODE_VER-linux-$ARCH /opt/node # Install Ruby 3.0 -ENV RUBY_VER="3.0.3" +ENV RUBY_VER="3.0.4" RUN apt-get update && \ apt-get install -y --no-install-recommends build-essential \ bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \ From 41fa50ac8655e0c15cf5e93fa14f9ce847aec88f Mon Sep 17 00:00:00 2001 From: Rens Groothuijsen Date: Sat, 13 Aug 2022 15:39:05 +0200 Subject: [PATCH 042/280] [Glitch] Add warning for sensitive audio posts Port e6979aa6d43f24ab290c27f596fcd71fcc0ac03a to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/components/status.js | 4 ++ .../flavours/glitch/features/audio/index.js | 64 ++++++++++++++++--- .../status/components/detailed_status.js | 4 ++ .../glitch/styles/components/media.scss | 7 ++ 4 files changed, 71 insertions(+), 8 deletions(-) diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index 11c81765b..b2d9acebc 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -625,6 +625,10 @@ class Status extends ImmutablePureComponent { height={110} cacheWidth={this.props.cacheMediaWidth} deployPictureInPicture={this.handleDeployPictureInPicture} + sensitive={status.get('sensitive')} + blurhash={attachment.get('blurhash')} + visible={this.state.showMedia} + onToggleVisibility={this.handleToggleMediaVisibility} /> )} , diff --git a/app/javascript/flavours/glitch/features/audio/index.js b/app/javascript/flavours/glitch/features/audio/index.js index ac0468f70..8fa64342e 100644 --- a/app/javascript/flavours/glitch/features/audio/index.js +++ b/app/javascript/flavours/glitch/features/audio/index.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import { formatTime } from 'flavours/glitch/features/video'; import Icon from 'flavours/glitch/components/icon'; import classNames from 'classnames'; @@ -8,6 +8,9 @@ import { throttle } from 'lodash'; import { getPointerPosition, fileNameFromURL } from 'flavours/glitch/features/video'; import { debounce } from 'lodash'; import Visualizer from './visualizer'; +import { displayMedia, useBlurhash } from 'flavours/glitch/util/initial_state'; +import Blurhash from 'flavours/glitch/components/blurhash'; +import { is } from 'immutable'; const messages = defineMessages({ play: { id: 'video.play', defaultMessage: 'Play' }, @@ -15,6 +18,7 @@ const messages = defineMessages({ mute: { id: 'video.mute', defaultMessage: 'Mute sound' }, unmute: { id: 'video.unmute', defaultMessage: 'Unmute sound' }, download: { id: 'video.download', defaultMessage: 'Download file' }, + hide: { id: 'audio.hide', defaultMessage: 'Hide audio' }, }); const TICK_SIZE = 10; @@ -30,10 +34,14 @@ class Audio extends React.PureComponent { duration: PropTypes.number, width: PropTypes.number, height: PropTypes.number, + sensitive: PropTypes.bool, editable: PropTypes.bool, fullscreen: PropTypes.bool, intl: PropTypes.object.isRequired, + blurhash: PropTypes.string, cacheWidth: PropTypes.func, + visible: PropTypes.bool, + onToggleVisibility: PropTypes.func, backgroundColor: PropTypes.string, foregroundColor: PropTypes.string, accentColor: PropTypes.string, @@ -53,6 +61,7 @@ class Audio extends React.PureComponent { muted: false, volume: 0.5, dragging: false, + revealed: this.props.visible !== undefined ? this.props.visible : (displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all'), }; constructor (props) { @@ -78,6 +87,8 @@ class Audio extends React.PureComponent { backgroundColor: this.props.backgroundColor, foregroundColor: this.props.foregroundColor, accentColor: this.props.accentColor, + sensitive: this.props.sensitive, + visible: this.props.visible, }; } @@ -132,6 +143,12 @@ class Audio extends React.PureComponent { } } + componentWillReceiveProps (nextProps) { + if (!is(nextProps.visible, this.props.visible) && nextProps.visible !== undefined) { + this.setState({ revealed: nextProps.visible }); + } + } + componentWillUnmount () { window.removeEventListener('scroll', this.handleScroll); window.removeEventListener('resize', this.handleResize); @@ -195,6 +212,14 @@ class Audio extends React.PureComponent { }); } + toggleReveal = () => { + if (this.props.onToggleVisibility) { + this.props.onToggleVisibility(); + } else { + this.setState({ revealed: !this.state.revealed }); + } + } + handleVolumeMouseDown = e => { document.addEventListener('mousemove', this.handleMouseVolSlide, true); document.addEventListener('mouseup', this.handleVolumeMouseUp, true); @@ -439,13 +464,29 @@ class Audio extends React.PureComponent { } render () { - const { src, intl, alt, editable, autoPlay } = this.props; - const { paused, muted, volume, currentTime, duration, buffer, dragging } = this.state; + const { src, intl, alt, editable, autoPlay, sensitive, blurhash } = this.props; + const { paused, muted, volume, currentTime, duration, buffer, dragging, revealed } = this.state; const progress = Math.min((currentTime / duration) * 100, 100); + let warning; + if (sensitive) { + warning = ; + } else { + warning = ; + } + return ( -
-
+ + {(revealed || editable) && + />}
@@ -514,6 +561,7 @@ class Audio extends React.PureComponent {
+ {!editable && } diff --git a/app/javascript/flavours/glitch/features/status/components/detailed_status.js b/app/javascript/flavours/glitch/features/status/components/detailed_status.js index 301a2add6..91dc5ba20 100644 --- a/app/javascript/flavours/glitch/features/status/components/detailed_status.js +++ b/app/javascript/flavours/glitch/features/status/components/detailed_status.js @@ -165,7 +165,11 @@ class DetailedStatus extends ImmutablePureComponent { backgroundColor={attachment.getIn(['meta', 'colors', 'background'])} foregroundColor={attachment.getIn(['meta', 'colors', 'foreground'])} accentColor={attachment.getIn(['meta', 'colors', 'accent'])} + sensitive={status.get('sensitive')} + visible={this.props.showMedia} + blurhash={attachment.get('blurhash')} height={150} + onToggleVisibility={this.props.onToggleMediaVisibility} />, ); mediaIcons.push('music'); diff --git a/app/javascript/flavours/glitch/styles/components/media.scss b/app/javascript/flavours/glitch/styles/components/media.scss index 8a551be73..9776e2265 100644 --- a/app/javascript/flavours/glitch/styles/components/media.scss +++ b/app/javascript/flavours/glitch/styles/components/media.scss @@ -389,6 +389,13 @@ height: 100%; } + &.inactive { + audio, + .video-player__controls { + visibility: hidden; + } + } + .video-player__volume::before, .video-player__seek::before { background: currentColor; From 6aa83b13ba541b948d7d6927728bbdcf63a23950 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Tue, 16 Aug 2022 03:32:21 +0900 Subject: [PATCH 043/280] Properly delete remote account's avatar/header when fetch/update (#18973) --- app/services/activitypub/process_account_service.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 4449a5427..34750dba6 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -105,11 +105,13 @@ class ActivityPub::ProcessAccountService < BaseService def set_fetchable_attributes! begin @account.avatar_remote_url = image_url('icon') || '' unless skip_download? + @account.avatar = nil if @account.avatar_remote_url.blank? rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError RedownloadAvatarWorker.perform_in(rand(30..600).seconds, @account.id) end begin @account.header_remote_url = image_url('image') || '' unless skip_download? + @account.header = nil if @account.header_remote_url.blank? rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError RedownloadHeaderWorker.perform_in(rand(30..600).seconds, @account.id) end From d92ce31c92903c3ce24c3fcadb99af3c1ba1d585 Mon Sep 17 00:00:00 2001 From: Shlee Date: Tue, 16 Aug 2022 04:03:05 +0930 Subject: [PATCH 044/280] Update notifications.js (#18977) --- app/javascript/mastodon/reducers/notifications.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index 4b460bc10..4563118ea 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -234,8 +234,6 @@ export default function notifications(state = initialState, action) { case FOLLOW_REQUEST_AUTHORIZE_SUCCESS: case FOLLOW_REQUEST_REJECT_SUCCESS: return filterNotifications(state, [action.id], 'follow_request'); - case ACCOUNT_MUTE_SUCCESS: - return action.relationship.muting_notifications ? filterNotifications(state, [action.relationship.id]) : state; case NOTIFICATIONS_CLEAR: return state.set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('hasMore', false); case TIMELINE_DELETE: From 461239db5d87ac584b07b394f894384853e875af Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 17 Aug 2022 23:06:48 +0200 Subject: [PATCH 045/280] Fix backend compatibility with OpenSSL 3.0 (#18449) * Update webpush to fork with OpenSSL 3 compatibility * Fix tests with OpenSSL 3.0 * Update webauthn gem to latest release and update dependencies --- Gemfile | 4 +- Gemfile.lock | 44 +++++++++++-------- .../webauthn_credential_fabricator.rb | 2 +- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/Gemfile b/Gemfile index d21459fcc..cd519111f 100644 --- a/Gemfile +++ b/Gemfile @@ -91,8 +91,8 @@ gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' gem 'tzinfo-data', '~> 1.2022' gem 'webpacker', '~> 5.4' -gem 'webpush', '~> 0.3' -gem 'webauthn', '~> 3.0.0.alpha1' +gem 'webpush', git: 'https://github.com/ClearlyClaire/webpush.git', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9' +gem 'webauthn', '~> 2.5' gem 'json-ld' gem 'json-ld-preloaded', '~> 3.2' diff --git a/Gemfile.lock b/Gemfile.lock index b08a7ce2e..72c58848e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,12 @@ +GIT + remote: https://github.com/ClearlyClaire/webpush.git + revision: f14a4d52e201128b1b00245d11b6de80d6cfdcd9 + ref: f14a4d52e201128b1b00245d11b6de80d6cfdcd9 + specs: + webpush (0.3.8) + hkdf (~> 0.2) + jwt (~> 2.0) + GEM remote: https://rubygems.org/ specs: @@ -79,7 +88,7 @@ GEM attr_encrypted (3.1.0) encryptor (~> 3.0.0) attr_required (1.0.1) - awrence (1.1.1) + awrence (1.2.1) aws-eventstream (1.2.0) aws-partitions (1.587.0) aws-sdk-core (3.130.2) @@ -168,9 +177,9 @@ GEM color_diff (0.1) concurrent-ruby (1.1.10) connection_pool (2.2.5) - cose (1.0.0) + cose (1.2.1) cbor (~> 0.5.9) - openssl-signature_algorithm (~> 0.4.0) + openssl-signature_algorithm (~> 1.0) crack (0.4.5) rexml crass (1.0.6) @@ -338,7 +347,7 @@ GEM json-ld (~> 3.2) rdf (~> 3.2) jsonapi-renderer (0.2.2) - jwt (2.2.2) + jwt (2.4.1) kaminari (1.2.2) activesupport (>= 4.1.0) kaminari-actionview (= 1.2.2) @@ -437,8 +446,9 @@ GEM validate_email validate_url webfinger (>= 1.0.1) - openssl (2.2.0) - openssl-signature_algorithm (0.4.0) + openssl (3.0.0) + openssl-signature_algorithm (1.2.1) + openssl (> 2.0, < 3.1) orm_adapter (0.5.0) ox (2.14.11) parallel (1.22.1) @@ -599,7 +609,6 @@ GEM scenic (1.6.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - securecompare (1.0.0) semantic_range (3.0.0) sidekiq (6.5.3) connection_pool (>= 2.2.2) @@ -655,9 +664,10 @@ GEM climate_control (>= 0.0.3, < 1.0) thor (1.2.1) tilt (2.0.10) - tpm-key_attestation (0.9.0) + tpm-key_attestation (0.11.0) bindata (~> 2.4) - openssl-signature_algorithm (~> 0.4.0) + openssl (> 2.0, < 3.1) + openssl-signature_algorithm (~> 1.0) tty-color (0.6.0) tty-cursor (0.7.1) tty-prompt (0.23.1) @@ -688,16 +698,15 @@ GEM public_suffix warden (1.2.9) rack (>= 2.0.9) - webauthn (3.0.0.alpha1) + webauthn (2.5.2) android_key_attestation (~> 0.3.0) awrence (~> 1.1) bindata (~> 2.4) cbor (~> 0.5.9) - cose (~> 1.0) - openssl (~> 2.0) + cose (~> 1.1) + openssl (>= 2.2, < 3.1) safety_net_attestation (~> 0.4.0) - securecompare (~> 1.0) - tpm-key_attestation (~> 0.9.0) + tpm-key_attestation (~> 0.11.0) webfinger (1.2.0) activesupport httpclient (>= 2.4) @@ -710,9 +719,6 @@ GEM rack-proxy (>= 0.6.1) railties (>= 5.2) semantic_range (>= 2.3.0) - webpush (0.3.8) - hkdf (~> 0.2) - jwt (~> 2.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -843,8 +849,8 @@ DEPENDENCIES tty-prompt (~> 0.23) twitter-text (~> 3.1.0) tzinfo-data (~> 1.2022) - webauthn (~> 3.0.0.alpha1) + webauthn (~> 2.5) webmock (~> 3.17) webpacker (~> 5.4) - webpush (~> 0.3) + webpush! xorcist (~> 1.1) diff --git a/spec/fabricators/webauthn_credential_fabricator.rb b/spec/fabricators/webauthn_credential_fabricator.rb index 496a7a735..ba59ce967 100644 --- a/spec/fabricators/webauthn_credential_fabricator.rb +++ b/spec/fabricators/webauthn_credential_fabricator.rb @@ -1,7 +1,7 @@ Fabricator(:webauthn_credential) do user_id { Fabricate(:user).id } external_id { Base64.urlsafe_encode64(SecureRandom.random_bytes(16)) } - public_key { OpenSSL::PKey::EC.new("prime256v1").generate_key.public_key } + public_key { OpenSSL::PKey::EC.generate('prime256v1').public_key } nickname 'USB key' sign_count 0 end From 656ac99ef04464b37d152b09f25facb8fd76c190 Mon Sep 17 00:00:00 2001 From: Mashiro Date: Thu, 18 Aug 2022 05:07:12 +0800 Subject: [PATCH 046/280] Fix ambiguous column names in `tootctl search deploy` (#18993) --- app/lib/importer/statuses_index_importer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/importer/statuses_index_importer.rb b/app/lib/importer/statuses_index_importer.rb index 7c6532560..5b5153d5c 100644 --- a/app/lib/importer/statuses_index_importer.rb +++ b/app/lib/importer/statuses_index_importer.rb @@ -84,6 +84,6 @@ class Importer::StatusesIndexImporter < Importer::BaseImporter end def local_statuses_scope - Status.local.select('id, coalesce(reblog_of_id, id) as status_id') + Status.local.select('"statuses"."id", COALESCE("statuses"."reblog_of_id", "statuses"."id") AS status_id') end end From d415f1116b4d992b7f33b6f0d2dcbf00934f61b1 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Thu, 18 Aug 2022 06:07:30 +0900 Subject: [PATCH 047/280] Fix /admin/accounts/ order parameter (#18996) --- app/views/admin/accounts/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index 7560fac7a..cb378f0ed 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -21,7 +21,7 @@ .filter-subset.filter-subset--with-select %strong= t 'generic.order_by' .input.select - = select_tag :order, options_for_select([[t('relationships.most_recent'), nil], [t('relationships.last_active'), 'active']], params[:order]) + = select_tag :order, options_for_select([[t('relationships.most_recent'), 'recent'], [t('relationships.last_active'), 'active']], params[:order]) .fields-group - %i(username by_domain display_name email ip).each do |key| From 86b364920491de74128d0fa538f31b225a750154 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:52:05 +0900 Subject: [PATCH 048/280] Bump tzinfo-data from 1.2022.1 to 1.2022.3 (#19003) Bumps [tzinfo-data](https://github.com/tzinfo/tzinfo-data) from 1.2022.1 to 1.2022.3. - [Release notes](https://github.com/tzinfo/tzinfo-data/releases) - [Commits](https://github.com/tzinfo/tzinfo-data/compare/v1.2022.1...v1.2022.3) --- updated-dependencies: - dependency-name: tzinfo-data dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 72c58848e..5f76ae58d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -683,7 +683,7 @@ GEM unf (~> 0.1.0) tzinfo (2.0.5) concurrent-ruby (~> 1.0) - tzinfo-data (1.2022.1) + tzinfo-data (1.2022.3) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext From 1cadebfcc7d74a2d4ec23e4a2380bfec174395d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:52:57 +0900 Subject: [PATCH 049/280] Bump stylelint from 14.9.1 to 14.10.0 (#18983) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.9.1 to 14.10.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.9.1...14.10.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 58 +++++++++++++++------------------------------------- 2 files changed, 17 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 564b8b3f5..3557537cd 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.9.1", + "stylelint": "^14.10.0", "stylelint-config-standard-scss": "^4.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index d2c61b112..6399f802f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1115,10 +1115,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@csstools/selector-specificity@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87" - integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA== +"@csstools/selector-specificity@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36" + integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== "@emotion/babel-plugin@^11.7.1": version "11.9.2" @@ -3279,13 +3279,6 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone-regexp@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" - integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q== - dependencies: - is-regexp "^2.0.0" - cluster-key-slot@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" @@ -4762,13 +4755,6 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execall@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" - integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow== - dependencies: - clone-regexp "^2.1.0" - exif-js@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz#9d10819bf571f873813e7640241255ab9ce1a814" @@ -4909,10 +4895,10 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== +fastest-levenshtein@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: version "1.13.0" @@ -5237,11 +5223,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -6257,11 +6238,6 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-regexp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" - integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== - is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -8792,7 +8768,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15, postcss@^8.4.14, postcss@^8.4.16: +postcss@^8.2.15, postcss@^8.4.16: version "8.4.16" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== @@ -10538,22 +10514,20 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.9.1: - version "14.9.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.9.1.tgz#6494ed38f148b1e75b402d678a3b6a8aae86dfda" - integrity sha512-RdAkJdPiLqHawCSnu21nE27MjNXaVd4WcOHA4vK5GtIGjScfhNnaOuWR2wWdfKFAvcWQPOYe311iveiVKSmwsA== +stylelint@^14.10.0: + version "14.10.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.10.0.tgz#c588f5cd47cd214cf1acee5bc165961b6a3ad836" + integrity sha512-VAmyKrEK+wNFh9R8mNqoxEFzaa4gsHGhcT4xgkQDuOA5cjF6CaNS8loYV7gpi4tIZBPUyXesotPXzJAMN8VLOQ== dependencies: - "@csstools/selector-specificity" "^2.0.1" + "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" colord "^2.9.2" cosmiconfig "^7.0.1" css-functions-list "^3.1.0" debug "^4.3.4" - execall "^2.0.0" fast-glob "^3.2.11" - fastest-levenshtein "^1.0.12" + fastest-levenshtein "^1.0.16" file-entry-cache "^6.0.1" - get-stdin "^8.0.0" global-modules "^2.0.0" globby "^11.1.0" globjoin "^0.1.4" @@ -10568,7 +10542,7 @@ stylelint@^14.9.1: micromatch "^4.0.5" normalize-path "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.14" + postcss "^8.4.16" postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^6.0.0" From da2a5233bea340d3ff17fc3a156d99bd52b4494b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:53:14 +0900 Subject: [PATCH 050/280] Bump sass from 1.54.3 to 1.54.4 (#18989) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.3 to 1.54.4. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.3...1.54.4) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3557537cd..5054c818c 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.3", + "sass": "^1.54.4", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 6399f802f..e916197dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9745,10 +9745,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.3: - version "1.54.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.3.tgz#37baa2652f7f1fdadb73240ee9a2b9b81fabb5c4" - integrity sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw== +sass@^1.54.4: + version "1.54.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.4.tgz#803ff2fef5525f1dd01670c3915b4b68b6cba72d" + integrity sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 0a3c0cbff7968ed539ae50a3d803ae760c46f633 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:53:28 +0900 Subject: [PATCH 051/280] Bump bullet from 7.0.2 to 7.0.3 (#18984) Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.2 to 7.0.3. - [Release notes](https://github.com/flyerhzm/bullet/releases) - [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md) - [Commits](https://github.com/flyerhzm/bullet/compare/7.0.2...7.0.3) --- updated-dependencies: - dependency-name: bullet dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5f76ae58d..e71572504 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -131,7 +131,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.5) redis (>= 1.0, <= 5.0) builder (3.2.4) - bullet (7.0.2) + bullet (7.0.3) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) bundler-audit (0.9.1) From 96fdbdb0ad8d8b1e61ec0611b333395cf6855834 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:53:37 +0900 Subject: [PATCH 052/280] Bump webmock from 3.17.0 to 3.17.1 (#18988) Bumps [webmock](https://github.com/bblimke/webmock) from 3.17.0 to 3.17.1. - [Release notes](https://github.com/bblimke/webmock/releases) - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.17.0...v3.17.1) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e71572504..4ac700928 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -710,7 +710,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.17.0) + webmock (3.17.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) From a220c84181f45b6104e711a931b6a2b72799aace Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:54:31 +0900 Subject: [PATCH 053/280] Bump sidekiq from 6.5.3 to 6.5.4 (#18982) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4ac700928..81a36ccd2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -610,7 +610,7 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) semantic_range (3.0.0) - sidekiq (6.5.3) + sidekiq (6.5.4) connection_pool (>= 2.2.2) rack (~> 2.0) redis (>= 4.5.0) From 71d403230e8cd9978bdd80092f155426ef4614a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:55:18 +0900 Subject: [PATCH 054/280] Bump brakeman from 5.2.3 to 5.3.1 (#18985) Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 5.2.3 to 5.3.1. - [Release notes](https://github.com/presidentbeef/brakeman/releases) - [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md) - [Commits](https://github.com/presidentbeef/brakeman/commits) --- updated-dependencies: - dependency-name: brakeman dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index cd519111f..addf923b4 100644 --- a/Gemfile +++ b/Gemfile @@ -134,7 +134,7 @@ group :development do gem 'memory_profiler' gem 'rubocop', '~> 1.30', require: false gem 'rubocop-rails', '~> 2.15', require: false - gem 'brakeman', '~> 5.2', require: false + gem 'brakeman', '~> 5.3', require: false gem 'bundler-audit', '~> 0.9', require: false gem 'capistrano', '~> 3.17' diff --git a/Gemfile.lock b/Gemfile.lock index 81a36ccd2..c7ff3b65e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -125,7 +125,7 @@ GEM ffi (~> 1.14) bootsnap (1.13.0) msgpack (~> 1.2) - brakeman (5.2.3) + brakeman (5.3.1) browser (4.2.0) brpoplpush-redis_script (0.1.2) concurrent-ruby (~> 1.0, >= 1.0.5) @@ -741,7 +741,7 @@ DEPENDENCIES binding_of_caller (~> 1.0) blurhash (~> 0.1) bootsnap (~> 1.13.0) - brakeman (~> 5.2) + brakeman (~> 5.3) browser bullet (~> 7.0) bundler-audit (~> 0.9) From 5935e61306d546d621ca6a4dd02100659ef4428d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:58:16 +0900 Subject: [PATCH 055/280] Bump pry-byebug from 3.9.0 to 3.10.1 (#19002) Bumps [pry-byebug](https://github.com/deivid-rodriguez/pry-byebug) from 3.9.0 to 3.10.1. - [Release notes](https://github.com/deivid-rodriguez/pry-byebug/releases) - [Changelog](https://github.com/deivid-rodriguez/pry-byebug/blob/master/CHANGELOG.md) - [Commits](https://github.com/deivid-rodriguez/pry-byebug/compare/v3.9.0...v3.10.1) --- updated-dependencies: - dependency-name: pry-byebug dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index addf923b4..38a4e6314 100644 --- a/Gemfile +++ b/Gemfile @@ -102,7 +102,7 @@ group :development, :test do gem 'fabrication', '~> 2.30' gem 'fuubar', '~> 2.5' gem 'i18n-tasks', '~> 1.0', require: false - gem 'pry-byebug', '~> 3.9' + gem 'pry-byebug', '~> 3.10' gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 5.1' end diff --git a/Gemfile.lock b/Gemfile.lock index c7ff3b65e..bd6150e53 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -470,12 +470,12 @@ GEM actionmailer (>= 3) premailer (~> 1.7, >= 1.7.9) private_address_check (0.5.0) - pry (0.13.1) + pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) - pry-byebug (3.9.0) + pry-byebug (3.10.1) byebug (~> 11.0) - pry (~> 0.13.0) + pry (>= 0.13, < 0.15) pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.7) @@ -809,7 +809,7 @@ DEPENDENCIES posix-spawn premailer-rails private_address_check (~> 0.5) - pry-byebug (~> 3.9) + pry-byebug (~> 3.10) pry-rails (~> 0.3) puma (~> 5.6) pundit (~> 2.2) From a7c280f93a22c1a711ca93b14282efece7fb16d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:06:07 +0900 Subject: [PATCH 056/280] Bump redis-namespace from 1.8.2 to 1.9.0 (#18987) Bumps [redis-namespace](https://github.com/resque/redis-namespace) from 1.8.2 to 1.9.0. - [Release notes](https://github.com/resque/redis-namespace/releases) - [Changelog](https://github.com/resque/redis-namespace/blob/master/CHANGELOG.md) - [Commits](https://github.com/resque/redis-namespace/compare/v1.8.2...v1.9) --- updated-dependencies: - dependency-name: redis-namespace dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 38a4e6314..5dfaf756b 100644 --- a/Gemfile +++ b/Gemfile @@ -51,7 +51,7 @@ gem 'ed25519', '~> 1.3' gem 'fast_blank', '~> 1.0' gem 'fastimage' gem 'hiredis', '~> 0.6' -gem 'redis-namespace', '~> 1.8' +gem 'redis-namespace', '~> 1.9' gem 'htmlentities', '~> 4.3' gem 'http', '~> 5.1' gem 'http_accept_language', '~> 2.1' diff --git a/Gemfile.lock b/Gemfile.lock index bd6150e53..1ed77ed12 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -542,8 +542,8 @@ GEM rdf-normalize (0.5.0) rdf (~> 3.2) redis (4.5.1) - redis-namespace (1.8.2) - redis (>= 3.0.4) + redis-namespace (1.9.0) + redis (>= 4) regexp_parser (2.5.0) request_store (1.5.1) rack (>= 1.4) @@ -822,7 +822,7 @@ DEPENDENCIES rails-settings-cached (~> 0.6) rdf-normalize (~> 0.5) redis (~> 4.5) - redis-namespace (~> 1.8) + redis-namespace (~> 1.9) rexml (~> 3.2) rqrcode (~> 2.1) rspec-rails (~> 5.1) From 99f6be3b601d643ec31e679d20f0d065f788455e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:06:15 +0900 Subject: [PATCH 057/280] Bump pg from 1.4.2 to 1.4.3 (#18986) Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.2 to 1.4.3. - [Release notes](https://github.com/ged/ruby-pg/releases) - [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc) - [Commits](https://github.com/ged/ruby-pg/compare/v1.4.2...v1.4.3) --- updated-dependencies: - dependency-name: pg dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1ed77ed12..21d3b81ca 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -457,7 +457,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.4.2) + pg (1.4.3) pghero (2.8.3) activerecord (>= 5) pkg-config (1.4.9) From 1254fa122fd04e5e3f2fce01649ce6c78a560209 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:24:46 +0900 Subject: [PATCH 058/280] Bump cocoon-js-vanilla from 1.2.0 to 1.3.0 (#18991) Bumps cocoon-js-vanilla from 1.2.0 to 1.3.0. --- updated-dependencies: - dependency-name: cocoon-js-vanilla dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5054c818c..6c7f9f53a 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "blurhash": "^1.1.5", "classnames": "^2.3.1", - "cocoon-js-vanilla": "^1.2.0", + "cocoon-js-vanilla": "^1.3.0", "color-blend": "^3.0.1", "compression-webpack-plugin": "^6.1.1", "cross-env": "^7.0.3", diff --git a/yarn.lock b/yarn.lock index e916197dc..d98905b07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3298,10 +3298,10 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -cocoon-js-vanilla@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/cocoon-js-vanilla/-/cocoon-js-vanilla-1.2.0.tgz#595348499d315d3b5828dd77a20974756cf59321" - integrity sha512-qLomIVL0Krfc983WLgaYPPktMjMtBN+F/CV15NPVDc9U9BCe2OL5WyAIYkPrVhDRphoYBmHCdIlZkq+vSBI4xg== +cocoon-js-vanilla@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/cocoon-js-vanilla/-/cocoon-js-vanilla-1.3.0.tgz#1e53663f5d314e5e9b315b63eaf8ae701df113c0" + integrity sha512-rMnbfW6oFhvELUg141vfqZKzsowfLJRxs5FksfmDr1ZBs6LTNVYE63NQyvgRqyYUOK54cKKbI+V83dQKeeRuPg== collect-v8-coverage@^1.0.0: version "1.0.1" From a6dc606d5209c5f61f8c19f5fbe5e33cb74d662a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:27:53 +0900 Subject: [PATCH 059/280] Bump webmock from 3.17.0 to 3.18.1 (#19007) Bumps [webmock](https://github.com/bblimke/webmock) from 3.17.0 to 3.18.1. - [Release notes](https://github.com/bblimke/webmock/releases) - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.17.0...v3.18.1) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 5dfaf756b..75525b0ac 100644 --- a/Gemfile +++ b/Gemfile @@ -119,7 +119,7 @@ group :test do gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' gem 'simplecov', '~> 0.21', require: false - gem 'webmock', '~> 3.17' + gem 'webmock', '~> 3.18' gem 'rspec_junit_formatter', '~> 0.5' end diff --git a/Gemfile.lock b/Gemfile.lock index 21d3b81ca..35c2d5114 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -710,7 +710,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.17.1) + webmock (3.18.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -850,7 +850,7 @@ DEPENDENCIES twitter-text (~> 3.1.0) tzinfo-data (~> 1.2022) webauthn (~> 2.5) - webmock (~> 3.17) + webmock (~> 3.18) webpacker (~> 5.4) webpush! xorcist (~> 1.1) From 5920d8fe33d5ecb0c7ca20c3b255216bb8de4aa9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 18:53:42 +0900 Subject: [PATCH 060/280] Bump omniauth from 1.9.1 to 1.9.2 (#19006) Bumps [omniauth](https://github.com/omniauth/omniauth) from 1.9.1 to 1.9.2. - [Release notes](https://github.com/omniauth/omniauth/releases) - [Commits](https://github.com/omniauth/omniauth/compare/v1.9.1...v1.9.2) --- updated-dependencies: - dependency-name: omniauth dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 35c2d5114..840fe0a78 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -423,7 +423,7 @@ GEM sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) oj (3.13.20) - omniauth (1.9.1) + omniauth (1.9.2) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) omniauth-cas (2.0.0) From 8a93dd3d83995a6821bfda88c28204dcee1461e8 Mon Sep 17 00:00:00 2001 From: Shlee Date: Tue, 16 Aug 2022 04:03:05 +0930 Subject: [PATCH 061/280] [Glitch] Update notifications.js Port d92ce31c92903c3ce24c3fcadb99af3c1ba1d585 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/reducers/notifications.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/javascript/flavours/glitch/reducers/notifications.js b/app/javascript/flavours/glitch/reducers/notifications.js index f538af7fa..1e61526b1 100644 --- a/app/javascript/flavours/glitch/reducers/notifications.js +++ b/app/javascript/flavours/glitch/reducers/notifications.js @@ -270,8 +270,6 @@ export default function notifications(state = initialState, action) { case FOLLOW_REQUEST_AUTHORIZE_SUCCESS: case FOLLOW_REQUEST_REJECT_SUCCESS: return filterNotifications(state, [action.id], 'follow_request'); - case ACCOUNT_MUTE_SUCCESS: - return action.relationship.muting_notifications ? filterNotifications(state, [action.relationship.id]) : state; case NOTIFICATIONS_CLEAR: return state.set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('hasMore', false); case TIMELINE_DELETE: From d83faa1a8902c91a5dbd0bf3d9740e3e19c1d623 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 24 Aug 2022 19:00:37 +0200 Subject: [PATCH 062/280] Add ability to block sign-ups from IP (#19037) --- .../auth/registrations_controller.rb | 6 +- app/models/ip_block.rb | 1 + app/services/app_sign_up_service.rb | 66 +++++++++++++++---- config/locales/simple_form.en.yml | 2 + spec/services/app_sign_up_service_spec.rb | 2 +- 5 files changed, 64 insertions(+), 13 deletions(-) diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 1c3adbd78..7e86e01ba 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -82,7 +82,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController end def check_enabled_registrations - redirect_to root_path if single_user_mode? || omniauth_only? || !allowed_registrations? + redirect_to root_path if single_user_mode? || omniauth_only? || !allowed_registrations? || ip_blocked? end def allowed_registrations? @@ -93,6 +93,10 @@ class Auth::RegistrationsController < Devise::RegistrationsController ENV['OMNIAUTH_ONLY'] == 'true' end + def ip_blocked? + IpBlock.where(severity: :sign_up_block).where('ip >>= ?', request.remote_ip.to_s).exists? + end + def invite_code if params[:user] params[:user][:invite_code] diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index aedd3ca0d..e1ab59806 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -19,6 +19,7 @@ class IpBlock < ApplicationRecord enum severity: { sign_up_requires_approval: 5000, + sign_up_block: 5500, no_access: 9999, } diff --git a/app/services/app_sign_up_service.rb b/app/services/app_sign_up_service.rb index e00694157..3833327bb 100644 --- a/app/services/app_sign_up_service.rb +++ b/app/services/app_sign_up_service.rb @@ -2,23 +2,67 @@ class AppSignUpService < BaseService def call(app, remote_ip, params) - return unless allowed_registrations? + @app = app + @remote_ip = remote_ip + @params = params - user_params = params.slice(:email, :password, :agreement, :locale) - account_params = params.slice(:username) - invite_request_params = { text: params[:reason] } - user = User.create!(user_params.merge(created_by_application: app, sign_up_ip: remote_ip, password_confirmation: user_params[:password], account_attributes: account_params, invite_request_attributes: invite_request_params)) + raise Mastodon::NotPermittedError unless allowed_registrations? - Doorkeeper::AccessToken.create!(application: app, - resource_owner_id: user.id, - scopes: app.scopes, - expires_in: Doorkeeper.configuration.access_token_expires_in, - use_refresh_token: Doorkeeper.configuration.refresh_token_enabled?) + ApplicationRecord.transaction do + create_user! + create_access_token! + end + + @access_token end private + def create_user! + @user = User.create!( + user_params.merge(created_by_application: @app, sign_up_ip: @remote_ip, password_confirmation: user_params[:password], account_attributes: account_params, invite_request_attributes: invite_request_params) + ) + end + + def create_access_token! + @access_token = Doorkeeper::AccessToken.create!( + application: @app, + resource_owner_id: @user.id, + scopes: @app.scopes, + expires_in: Doorkeeper.configuration.access_token_expires_in, + use_refresh_token: Doorkeeper.configuration.refresh_token_enabled? + ) + end + + def user_params + @params.slice(:email, :password, :agreement, :locale) + end + + def account_params + @params.slice(:username) + end + + def invite_request_params + { text: @params[:reason] } + end + def allowed_registrations? - Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode + registrations_open? && !single_user_mode? && !omniauth_only? && !ip_blocked? + end + + def registrations_open? + Setting.registrations_mode != 'none' + end + + def single_user_mode? + Rails.configuration.x.single_user_mode + end + + def omniauth_only? + ENV['OMNIAUTH_ONLY'] == 'true' + end + + def ip_blocked? + IpBlock.where(severity: :sign_up_block).where('ip >>= ?', @remote_ip.to_s).exists? end end diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index c17a62cbe..28f78d500 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -85,6 +85,7 @@ en: ip: Enter an IPv4 or IPv6 address. You can block entire ranges using the CIDR syntax. Be careful not to lock yourself out! severities: no_access: Block access to all resources + sign_up_block: New sign-ups will not be possible sign_up_requires_approval: New sign-ups will require your approval severity: Choose what will happen with requests from this IP rule: @@ -219,6 +220,7 @@ en: ip: IP severities: no_access: Block access + sign_up_block: Block sign-ups sign_up_requires_approval: Limit sign-ups severity: Rule notification_emails: diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb index e0c83b704..8ec4d4a7a 100644 --- a/spec/services/app_sign_up_service_spec.rb +++ b/spec/services/app_sign_up_service_spec.rb @@ -11,7 +11,7 @@ RSpec.describe AppSignUpService, type: :service do it 'returns nil when registrations are closed' do tmp = Setting.registrations_mode Setting.registrations_mode = 'none' - expect(subject.call(app, remote_ip, good_params)).to be_nil + expect { subject.call(app, remote_ip, good_params) }.to raise_error Mastodon::NotPermittedError Setting.registrations_mode = tmp end From 0412a4d03e3e075b8b4090774ebe5db4f95412de Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 24 Aug 2022 19:00:55 +0200 Subject: [PATCH 063/280] Change e-mail domain blocks to match subdomains of blocked domains (#18979) --- app/models/email_domain_block.rb | 66 ++++++++++++++++++-------- spec/models/email_domain_block_spec.rb | 27 ++++++++--- 2 files changed, 65 insertions(+), 28 deletions(-) diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index 0e1e663c1..f9d74332b 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -30,32 +30,56 @@ class EmailDomainBlock < ApplicationRecord @history ||= Trends::History.new('email_domain_blocks', id) end - def self.block?(domain_or_domains, attempt_ip: nil) - domains = Array(domain_or_domains).map do |str| - domain = begin - if str.include?('@') - str.split('@', 2).last - else - str - end + class Matcher + def initialize(domain_or_domains, attempt_ip: nil) + @uris = extract_uris(domain_or_domains) + @attempt_ip = attempt_ip + end + + def match? + blocking? || invalid_uri? + end + + private + + def invalid_uri? + @uris.any?(&:nil?) + end + + def blocking? + blocks = EmailDomainBlock.where(domain: domains_with_variants).order(Arel.sql('char_length(domain) desc')) + blocks.each { |block| block.history.add(@attempt_ip) } if @attempt_ip.present? + blocks.any? + end + + def domains_with_variants + @uris.flat_map do |uri| + next if uri.nil? + + segments = uri.normalized_host.split('.') + + segments.map.with_index { |_, i| segments[i..-1].join('.') } end - - TagManager.instance.normalize_domain(domain) if domain.present? - rescue Addressable::URI::InvalidURIError - nil end - # If some of the inputs passed in are invalid, we definitely want to - # block the attempt, but we also want to register hits against any - # other valid matches + def extract_uris(domain_or_domains) + Array(domain_or_domains).map do |str| + domain = begin + if str.include?('@') + str.split('@', 2).last + else + str + end + end - blocked = domains.any?(&:nil?) - - where(domain: domains).find_each do |block| - blocked = true - block.history.add(attempt_ip) if attempt_ip.present? + Addressable::URI.new.tap { |u| u.host = domain.strip } if domain.present? + rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError + nil + end end + end - blocked + def self.block?(domain_or_domains, attempt_ip: nil) + Matcher.new(domain_or_domains, attempt_ip: attempt_ip).match? end end diff --git a/spec/models/email_domain_block_spec.rb b/spec/models/email_domain_block_spec.rb index 567a32c32..e23116888 100644 --- a/spec/models/email_domain_block_spec.rb +++ b/spec/models/email_domain_block_spec.rb @@ -12,16 +12,29 @@ RSpec.describe EmailDomainBlock, type: :model do let(:input) { nil } context 'given an e-mail address' do - let(:input) { 'nyarn@example.com' } + let(:input) { "foo@#{domain}" } - it 'returns true if the domain is blocked' do - Fabricate(:email_domain_block, domain: 'example.com') - expect(EmailDomainBlock.block?(input)).to be true + context do + let(:domain) { 'example.com' } + + it 'returns true if the domain is blocked' do + Fabricate(:email_domain_block, domain: 'example.com') + expect(EmailDomainBlock.block?(input)).to be true + end + + it 'returns false if the domain is not blocked' do + Fabricate(:email_domain_block, domain: 'other-example.com') + expect(EmailDomainBlock.block?(input)).to be false + end end - it 'returns false if the domain is not blocked' do - Fabricate(:email_domain_block, domain: 'other-example.com') - expect(EmailDomainBlock.block?(input)).to be false + context do + let(:domain) { 'mail.example.com' } + + it 'returns true if it is a subdomain of a blocked domain' do + Fabricate(:email_domain_block, domain: 'example.com') + expect(described_class.block?(input)).to be true + end end end From b21aa828039610ef1750eff2291821b95da76896 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:54:36 +0900 Subject: [PATCH 064/280] Bump stackprof from 0.2.20 to 0.2.21 (#19027) Bumps [stackprof](https://github.com/tmm1/stackprof) from 0.2.20 to 0.2.21. - [Release notes](https://github.com/tmm1/stackprof/releases) - [Changelog](https://github.com/tmm1/stackprof/blob/master/CHANGELOG.md) - [Commits](https://github.com/tmm1/stackprof/compare/v0.2.20...v0.2.21) --- updated-dependencies: - dependency-name: stackprof dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 840fe0a78..266ddda1a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -648,7 +648,7 @@ GEM sshkit (1.21.2) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - stackprof (0.2.20) + stackprof (0.2.21) statsd-ruby (1.5.0) stoplight (3.0.0) strong_migrations (0.7.9) From ca5536167105e2bb690233d53cdfb05f4b0c33db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:55:01 +0900 Subject: [PATCH 065/280] Bump @babel/core from 7.18.10 to 7.18.13 (#19032) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.10 to 7.18.13. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.13/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 56 ++++++++++++++++++++++++++-------------------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 6c7f9f53a..f116add2e 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.10", + "@babel/core": "^7.18.13", "@babel/plugin-proposal-decorators": "^7.18.10", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index d98905b07..a9b1cd757 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33,21 +33,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.10", "@babel/core@^7.7.2": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" - integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.13", "@babel/core@^7.7.2": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" + integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" + "@babel/generator" "^7.18.13" "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-module-transforms" "^7.18.9" "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.10" + "@babel/parser" "^7.18.13" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" + "@babel/traverse" "^7.18.13" + "@babel/types" "^7.18.13" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -63,12 +63,12 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.10", "@babel/generator@^7.7.2": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a" - integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA== +"@babel/generator@^7.18.13", "@babel/generator@^7.7.2": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" + integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== dependencies: - "@babel/types" "^7.18.10" + "@babel/types" "^7.18.13" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -337,10 +337,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" - integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" + integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -1085,26 +1085,26 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" - integrity sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g== +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" + integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" + "@babel/generator" "^7.18.13" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.18.9" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" + "@babel/parser" "^7.18.13" + "@babel/types" "^7.18.13" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" - integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" + integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== dependencies: "@babel/helper-string-parser" "^7.18.10" "@babel/helper-validator-identifier" "^7.18.6" From 37de05fdde75e32d6801e237545d4b67fd3d600e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:55:34 +0900 Subject: [PATCH 066/280] Bump sass from 1.54.4 to 1.54.5 (#19028) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.4 to 1.54.5. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.4...1.54.5) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f116add2e..6f6aa7b85 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.4", + "sass": "^1.54.5", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index a9b1cd757..e78c4741b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9745,10 +9745,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.4: - version "1.54.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.4.tgz#803ff2fef5525f1dd01670c3915b4b68b6cba72d" - integrity sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA== +sass@^1.54.5: + version "1.54.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.5.tgz#93708f5560784f6ff2eab8542ade021a4a947b3a" + integrity sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 26a1d1ac5f4e582296f813530be68c07cc85033a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:56:16 +0900 Subject: [PATCH 067/280] Bump webpack-bundle-analyzer from 4.5.0 to 4.6.1 (#19029) Bumps [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) from 4.5.0 to 4.6.1. - [Release notes](https://github.com/webpack-contrib/webpack-bundle-analyzer/releases) - [Changelog](https://github.com/webpack-contrib/webpack-bundle-analyzer/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/webpack-bundle-analyzer/compare/v4.5.0...v4.6.1) --- updated-dependencies: - dependency-name: webpack-bundle-analyzer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 6f6aa7b85..9ae7573d9 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "uuid": "^8.3.1", "webpack": "^4.46.0", "webpack-assets-manifest": "^4.0.6", - "webpack-bundle-analyzer": "^4.5.0", + "webpack-bundle-analyzer": "^4.6.1", "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", diff --git a/yarn.lock b/yarn.lock index e78c4741b..0703b0a7e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2139,12 +2139,7 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4: - version "8.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.3.0.tgz#1193f9b96c4e8232f00b11a9edff81b2c8b98b88" - integrity sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw== - -acorn@^8.5.0, acorn@^8.7.1: +acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== @@ -11343,10 +11338,10 @@ webpack-assets-manifest@^4.0.6: tapable "^1.0" webpack-sources "^1.0" -webpack-bundle-analyzer@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" - integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== +webpack-bundle-analyzer@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz#bee2ee05f4ba4ed430e4831a319126bb4ed9f5a6" + integrity sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw== dependencies: acorn "^8.0.4" acorn-walk "^8.0.0" From 115b8311c1f3e38fba5eb6bdbd272e8a925aa06c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:57:16 +0900 Subject: [PATCH 068/280] Bump sidekiq from 6.5.4 to 6.5.5 (#19030) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.4 to 6.5.5. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.4...v6.5.5) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 266ddda1a..8306efec2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -610,7 +610,7 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) semantic_range (3.0.0) - sidekiq (6.5.4) + sidekiq (6.5.5) connection_pool (>= 2.2.2) rack (~> 2.0) redis (>= 4.5.0) From d156e9b823e5be9e33de4a5d667b2cd32a94cbe4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:58:04 +0900 Subject: [PATCH 069/280] Bump stylelint from 14.10.0 to 14.11.0 (#19034) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.10.0 to 14.11.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.10.0...14.11.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 9ae7573d9..b605fe114 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.10.0", + "stylelint": "^14.11.0", "stylelint-config-standard-scss": "^4.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index 0703b0a7e..ef957156d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3361,10 +3361,10 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" -colord@^2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== +colord@^2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== colorette@^1.2.2: version "1.2.2" @@ -10509,14 +10509,14 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.10.0: - version "14.10.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.10.0.tgz#c588f5cd47cd214cf1acee5bc165961b6a3ad836" - integrity sha512-VAmyKrEK+wNFh9R8mNqoxEFzaa4gsHGhcT4xgkQDuOA5cjF6CaNS8loYV7gpi4tIZBPUyXesotPXzJAMN8VLOQ== +stylelint@^14.11.0: + version "14.11.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.11.0.tgz#e2ecb28bbacab05e1fbeb84cbba23883b27499cc" + integrity sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA== dependencies: "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" - colord "^2.9.2" + colord "^2.9.3" cosmiconfig "^7.0.1" css-functions-list "^3.1.0" debug "^4.3.4" @@ -10551,7 +10551,7 @@ stylelint@^14.10.0: svg-tags "^1.0.0" table "^6.8.0" v8-compile-cache "^2.3.0" - write-file-atomic "^4.0.1" + write-file-atomic "^4.0.2" stylis@4.0.13: version "4.0.13" @@ -11614,10 +11614,10 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" - integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== +write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" signal-exit "^3.0.7" From 50487db1224851a49ee523bbc013d5f8686a7a55 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:27:47 +0200 Subject: [PATCH 070/280] Add ability to filter individual posts (#18945) * Add database table for status-specific filters * Add REST endpoints, entities and attributes * Show status filters in /filters interface * Perform server-side filtering for individual posts filters * Fix filtering on context mismatch * Refactor `toServerSideType` by moving it to its own module * Move loupe and delete icons to their own module * Add ability to filter individual posts from WebUI * Replace keyword list by warnings (expired, context mismatch) * Refactor server-side filtering code * Add tests --- .../api/v1/filters/statuses_controller.rb | 44 ++++ .../filters/statuses_controller.rb | 49 +++++ app/controllers/filters_controller.rb | 2 +- app/javascript/mastodon/actions/filters.js | 93 +++++++++ app/javascript/mastodon/actions/statuses.js | 4 +- app/javascript/mastodon/components/status.js | 1 + .../mastodon/components/status_action_bar.js | 16 +- .../mastodon/containers/status_container.js | 9 +- .../compose/components/language_dropdown.js | 19 +- .../features/filters/added_to_filter.js | 102 ++++++++++ .../features/filters/select_filter.js | 192 ++++++++++++++++++ .../features/ui/components/filter_modal.js | 134 ++++++++++++ .../features/ui/components/modal_root.js | 2 + .../features/ui/util/async-components.js | 4 + app/javascript/mastodon/reducers/filters.js | 11 +- app/javascript/mastodon/selectors/index.js | 19 +- app/javascript/mastodon/utils/filters.js | 16 ++ app/javascript/mastodon/utils/icons.js | 13 ++ .../styles/mastodon/components.scss | 18 ++ app/models/concerns/account_interactions.rb | 10 +- app/models/custom_filter.rb | 28 ++- app/models/custom_filter_status.rb | 37 ++++ app/models/form/status_filter_batch_action.rb | 34 ++++ app/presenters/filter_result_presenter.rb | 2 +- .../status_relationships_presenter.rb | 7 +- .../rest/filter_result_serializer.rb | 5 + app/serializers/rest/filter_serializer.rb | 1 + .../rest/filter_status_serializer.rb | 13 ++ app/views/filters/_filter.html.haml | 9 + app/views/filters/_filter_fields.html.haml | 7 + .../filters/statuses/_status_filter.html.haml | 37 ++++ app/views/filters/statuses/index.html.haml | 38 ++++ config/locales/en.yml | 15 ++ config/routes.rb | 11 +- ...808101323_create_custom_filter_statuses.rb | 12 ++ db/schema.rb | 13 +- .../v1/filters/statuses_controller_spec.rb | 116 +++++++++++ .../api/v1/statuses_controller_spec.rb | 27 +++ .../custom_filter_status_fabricator.rb | 4 + .../status_relationships_presenter_spec.rb | 27 +++ 40 files changed, 1138 insertions(+), 63 deletions(-) create mode 100644 app/controllers/api/v1/filters/statuses_controller.rb create mode 100644 app/controllers/filters/statuses_controller.rb create mode 100644 app/javascript/mastodon/actions/filters.js create mode 100644 app/javascript/mastodon/features/filters/added_to_filter.js create mode 100644 app/javascript/mastodon/features/filters/select_filter.js create mode 100644 app/javascript/mastodon/features/ui/components/filter_modal.js create mode 100644 app/javascript/mastodon/utils/filters.js create mode 100644 app/javascript/mastodon/utils/icons.js create mode 100644 app/models/custom_filter_status.rb create mode 100644 app/models/form/status_filter_batch_action.rb create mode 100644 app/serializers/rest/filter_status_serializer.rb create mode 100644 app/views/filters/statuses/_status_filter.html.haml create mode 100644 app/views/filters/statuses/index.html.haml create mode 100644 db/migrate/20220808101323_create_custom_filter_statuses.rb create mode 100644 spec/controllers/api/v1/filters/statuses_controller_spec.rb create mode 100644 spec/fabricators/custom_filter_status_fabricator.rb diff --git a/app/controllers/api/v1/filters/statuses_controller.rb b/app/controllers/api/v1/filters/statuses_controller.rb new file mode 100644 index 000000000..b6bed306f --- /dev/null +++ b/app/controllers/api/v1/filters/statuses_controller.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +class Api::V1::Filters::StatusesController < Api::BaseController + before_action -> { doorkeeper_authorize! :read, :'read:filters' }, only: [:index, :show] + before_action -> { doorkeeper_authorize! :write, :'write:filters' }, except: [:index, :show] + before_action :require_user! + + before_action :set_status_filters, only: :index + before_action :set_status_filter, only: [:show, :destroy] + + def index + render json: @status_filters, each_serializer: REST::FilterStatusSerializer + end + + def create + @status_filter = current_account.custom_filters.find(params[:filter_id]).statuses.create!(resource_params) + + render json: @status_filter, serializer: REST::FilterStatusSerializer + end + + def show + render json: @status_filter, serializer: REST::FilterStatusSerializer + end + + def destroy + @status_filter.destroy! + render_empty + end + + private + + def set_status_filters + filter = current_account.custom_filters.includes(:statuses).find(params[:filter_id]) + @status_filters = filter.statuses + end + + def set_status_filter + @status_filter = CustomFilterStatus.includes(:custom_filter).where(custom_filter: { account: current_account }).find(params[:id]) + end + + def resource_params + params.permit(:status_id) + end +end diff --git a/app/controllers/filters/statuses_controller.rb b/app/controllers/filters/statuses_controller.rb new file mode 100644 index 000000000..cc493c22c --- /dev/null +++ b/app/controllers/filters/statuses_controller.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +class Filters::StatusesController < ApplicationController + layout 'admin' + + before_action :authenticate_user! + before_action :set_filter + before_action :set_status_filters + before_action :set_body_classes + + PER_PAGE = 20 + + def index + @status_filter_batch_action = Form::StatusFilterBatchAction.new + end + + def batch + @status_filter_batch_action = Form::StatusFilterBatchAction.new(status_filter_batch_action_params.merge(current_account: current_account, filter_id: params[:filter_id], type: action_from_button)) + @status_filter_batch_action.save! + rescue ActionController::ParameterMissing + flash[:alert] = I18n.t('admin.statuses.no_status_selected') + ensure + redirect_to edit_filter_path(@filter) + end + + private + + def set_filter + @filter = current_account.custom_filters.find(params[:filter_id]) + end + + def set_status_filters + @status_filters = @filter.statuses.preload(:status).page(params[:page]).per(PER_PAGE) + end + + def status_filter_batch_action_params + params.require(:form_status_filter_batch_action).permit(status_filter_ids: []) + end + + def action_from_button + if params[:remove] + 'remove' + end + end + + def set_body_classes + @body_classes = 'admin' + end +end diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb index 5ed53bce1..cc5cb5d9f 100644 --- a/app/controllers/filters_controller.rb +++ b/app/controllers/filters_controller.rb @@ -8,7 +8,7 @@ class FiltersController < ApplicationController before_action :set_body_classes def index - @filters = current_account.custom_filters.includes(:keywords).order(:phrase) + @filters = current_account.custom_filters.includes(:keywords, :statuses).order(:phrase) end def new diff --git a/app/javascript/mastodon/actions/filters.js b/app/javascript/mastodon/actions/filters.js new file mode 100644 index 000000000..76326802e --- /dev/null +++ b/app/javascript/mastodon/actions/filters.js @@ -0,0 +1,93 @@ +import api from '../api'; +import { openModal } from './modal'; + +export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST'; +export const FILTERS_FETCH_SUCCESS = 'FILTERS_FETCH_SUCCESS'; +export const FILTERS_FETCH_FAIL = 'FILTERS_FETCH_FAIL'; + +export const FILTERS_STATUS_CREATE_REQUEST = 'FILTERS_STATUS_CREATE_REQUEST'; +export const FILTERS_STATUS_CREATE_SUCCESS = 'FILTERS_STATUS_CREATE_SUCCESS'; +export const FILTERS_STATUS_CREATE_FAIL = 'FILTERS_STATUS_CREATE_FAIL'; + +export const FILTERS_CREATE_REQUEST = 'FILTERS_CREATE_REQUEST'; +export const FILTERS_CREATE_SUCCESS = 'FILTERS_CREATE_SUCCESS'; +export const FILTERS_CREATE_FAIL = 'FILTERS_CREATE_FAIL'; + +export const initAddFilter = (status, { contextType }) => dispatch => + dispatch(openModal('FILTER', { + statusId: status?.get('id'), + contextType: contextType, + })); + +export const fetchFilters = () => (dispatch, getState) => { + dispatch({ + type: FILTERS_FETCH_REQUEST, + skipLoading: true, + }); + + api(getState) + .get('/api/v2/filters') + .then(({ data }) => dispatch({ + type: FILTERS_FETCH_SUCCESS, + filters: data, + skipLoading: true, + })) + .catch(err => dispatch({ + type: FILTERS_FETCH_FAIL, + err, + skipLoading: true, + skipAlert: true, + })); +}; + +export const createFilterStatus = (params, onSuccess, onFail) => (dispatch, getState) => { + dispatch(createFilterStatusRequest()); + + api(getState).post(`/api/v1/filters/${params.filter_id}/statuses`, params).then(response => { + dispatch(createFilterStatusSuccess(response.data)); + if (onSuccess) onSuccess(); + }).catch(error => { + dispatch(createFilterStatusFail(error)); + if (onFail) onFail(); + }); +}; + +export const createFilterStatusRequest = () => ({ + type: FILTERS_STATUS_CREATE_REQUEST, +}); + +export const createFilterStatusSuccess = filter_status => ({ + type: FILTERS_STATUS_CREATE_SUCCESS, + filter_status, +}); + +export const createFilterStatusFail = error => ({ + type: FILTERS_STATUS_CREATE_FAIL, + error, +}); + +export const createFilter = (params, onSuccess, onFail) => (dispatch, getState) => { + dispatch(createFilterRequest()); + + api(getState).post('/api/v2/filters', params).then(response => { + dispatch(createFilterSuccess(response.data)); + if (onSuccess) onSuccess(response.data); + }).catch(error => { + dispatch(createFilterFail(error)); + if (onFail) onFail(); + }); +}; + +export const createFilterRequest = () => ({ + type: FILTERS_CREATE_REQUEST, +}); + +export const createFilterSuccess = filter => ({ + type: FILTERS_CREATE_SUCCESS, + filter, +}); + +export const createFilterFail = error => ({ + type: FILTERS_CREATE_FAIL, + error, +}); diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index adc24eabf..32a4f1f85 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -42,9 +42,9 @@ export function fetchStatusRequest(id, skipLoading) { }; }; -export function fetchStatus(id) { +export function fetchStatus(id, forceFetch = false) { return (dispatch, getState) => { - const skipLoading = getState().getIn(['statuses', id], null) !== null; + const skipLoading = !forceFetch && getState().getIn(['statuses', id], null) !== null; dispatch(fetchContext(id)); diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index dee935a6c..d36311c67 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -80,6 +80,7 @@ class Status extends ImmutablePureComponent { onOpenMedia: PropTypes.func, onOpenVideo: PropTypes.func, onBlock: PropTypes.func, + onAddFilter: PropTypes.func, onEmbed: PropTypes.func, onHeightChange: PropTypes.func, onToggleHidden: PropTypes.func, diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index d44da482d..4b384e6e5 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -44,6 +44,7 @@ const messages = defineMessages({ unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, + filter: { id: 'status.filter', defaultMessage: 'Filter this post' }, }); const mapStateToProps = (state, { status }) => ({ @@ -80,6 +81,7 @@ class StatusActionBar extends ImmutablePureComponent { onPin: PropTypes.func, onBookmark: PropTypes.func, onFilter: PropTypes.func, + onAddFilter: PropTypes.func, withDismiss: PropTypes.bool, withCounters: PropTypes.bool, scrollKey: PropTypes.string, @@ -211,8 +213,8 @@ class StatusActionBar extends ImmutablePureComponent { this.props.onMuteConversation(this.props.status); } - handleFilter = () => { - this.props.onFilter(); + handleFilterClick = () => { + this.props.onAddFilter(this.props.status); } handleCopy = () => { @@ -235,7 +237,7 @@ class StatusActionBar extends ImmutablePureComponent { } - handleFilterClick = () => { + handleHideClick = () => { this.props.onFilter(); } @@ -294,6 +296,12 @@ class StatusActionBar extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.handleBlockClick }); } + if (!this.props.onFilter) { + menu.push(null); + menu.push({ text: intl.formatMessage(messages.filter), action: this.handleFilterClick }); + menu.push(null); + } + menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.handleReport }); if (account.get('acct') !== account.get('username')) { @@ -343,7 +351,7 @@ class StatusActionBar extends ImmutablePureComponent { ); const filterButton = this.props.onFilter && ( - + ); return ( diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.js index ef0aca13a..28698b082 100644 --- a/app/javascript/mastodon/containers/status_container.js +++ b/app/javascript/mastodon/containers/status_container.js @@ -34,6 +34,9 @@ import { blockDomain, unblockDomain, } from '../actions/domain_blocks'; +import { + initAddFilter, +} from '../actions/filters'; import { initMuteModal } from '../actions/mutes'; import { initBlockModal } from '../actions/blocks'; import { initBoostModal } from '../actions/boosts'; @@ -66,7 +69,7 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -const mapDispatchToProps = (dispatch, { intl }) => ({ +const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ onReply (status, router) { dispatch((_, getState) => { @@ -176,6 +179,10 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(initReport(status.get('account'), status)); }, + onAddFilter (status) { + dispatch(initAddFilter(status, { contextType })); + }, + onMute (account) { dispatch(initMuteModal(account)); }, diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.js b/app/javascript/mastodon/features/compose/components/language_dropdown.js index d76490c77..0af3db7a4 100644 --- a/app/javascript/mastodon/features/compose/components/language_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.js @@ -8,6 +8,7 @@ import spring from 'react-motion/lib/spring'; import { supportsPassiveEvents } from 'detect-passive-events'; import classNames from 'classnames'; import { languages as preloadedLanguages } from 'mastodon/initial_state'; +import { loupeIcon, deleteIcon } from 'mastodon/utils/icons'; import fuzzysort from 'fuzzysort'; const messages = defineMessages({ @@ -16,22 +17,6 @@ const messages = defineMessages({ clear: { id: 'emoji_button.clear', defaultMessage: 'Clear' }, }); -// Copied from emoji-mart for consistency with emoji picker and since -// they don't export the icons in the package -const icons = { - loupe: ( - - - - ), - - delete: ( - - - - ), -}; - const listenerOptions = supportsPassiveEvents ? { passive: true } : false; class LanguageDropdownMenu extends React.PureComponent { @@ -242,7 +227,7 @@ class LanguageDropdownMenu extends React.PureComponent {
- +
diff --git a/app/javascript/mastodon/features/filters/added_to_filter.js b/app/javascript/mastodon/features/filters/added_to_filter.js new file mode 100644 index 000000000..3785eb3c5 --- /dev/null +++ b/app/javascript/mastodon/features/filters/added_to_filter.js @@ -0,0 +1,102 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { FormattedMessage } from 'react-intl'; +import { toServerSideType } from 'mastodon/utils/filters'; +import Button from 'mastodon/components/button'; +import { connect } from 'react-redux'; + +const mapStateToProps = (state, { filterId }) => ({ + filter: state.getIn(['filters', filterId]), +}); + +export default @connect(mapStateToProps) +class AddedToFilter extends React.PureComponent { + + static propTypes = { + onClose: PropTypes.func.isRequired, + contextType: PropTypes.string, + filter: ImmutablePropTypes.map.isRequired, + dispatch: PropTypes.func.isRequired, + }; + + handleCloseClick = () => { + const { onClose } = this.props; + onClose(); + }; + + render () { + const { filter, contextType } = this.props; + + let expiredMessage = null; + if (filter.get('expires_at') && filter.get('expires_at') < new Date()) { + expiredMessage = ( + +

+

+ +

+
+ ); + } + + let contextMismatchMessage = null; + if (contextType && !filter.get('context').includes(toServerSideType(contextType))) { + contextMismatchMessage = ( + +

+

+ +

+
+ ); + } + + const settings_link = ( + + + + ); + + return ( + +

+

+ +

+ + {expiredMessage} + {contextMismatchMessage} + +

+

+ +

+ +
+ +
+ +
+ + ); + } + +} diff --git a/app/javascript/mastodon/features/filters/select_filter.js b/app/javascript/mastodon/features/filters/select_filter.js new file mode 100644 index 000000000..b5b354529 --- /dev/null +++ b/app/javascript/mastodon/features/filters/select_filter.js @@ -0,0 +1,192 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { toServerSideType } from 'mastodon/utils/filters'; +import { loupeIcon, deleteIcon } from 'mastodon/utils/icons'; +import Icon from 'mastodon/components/icon'; +import fuzzysort from 'fuzzysort'; + +const messages = defineMessages({ + search: { id: 'filter_modal.select_filter.search', defaultMessage: 'Search or create' }, + clear: { id: 'emoji_button.clear', defaultMessage: 'Clear' }, +}); + +const mapStateToProps = (state, { contextType }) => ({ + filters: Array.from(state.get('filters').values()).map((filter) => [ + filter.get('id'), + filter.get('title'), + filter.get('keywords')?.map((keyword) => keyword.get('keyword')).join('\n'), + filter.get('expires_at') && filter.get('expires_at') < new Date(), + contextType && !filter.get('context').includes(toServerSideType(contextType)), + ]), +}); + +export default @connect(mapStateToProps) +@injectIntl +class SelectFilter extends React.PureComponent { + + static propTypes = { + onSelectFilter: PropTypes.func.isRequired, + onNewFilter: PropTypes.func.isRequired, + filters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.object)), + intl: PropTypes.object.isRequired, + }; + + state = { + searchValue: '', + }; + + search () { + const { filters } = this.props; + const { searchValue } = this.state; + + if (searchValue === '') { + return filters; + } + + return fuzzysort.go(searchValue, filters, { + keys: ['1', '2'], + limit: 5, + threshold: -10000, + }).map(result => result.obj); + } + + renderItem = filter => { + let warning = null; + if (filter[3] || filter[4]) { + warning = ( + + ( + {filter[3] && } + {filter[3] && filter[4] && ', '} + {filter[4] && } + ) + + ); + } + + return ( +
+ {filter[1]} {warning} +
+ ); + } + + renderCreateNew (name) { + return ( +
+ +
+ ); + } + + handleSearchChange = ({ target }) => { + this.setState({ searchValue: target.value }); + } + + setListRef = c => { + this.listNode = c; + } + + handleKeyDown = e => { + const index = Array.from(this.listNode.childNodes).findIndex(node => node === e.currentTarget); + + let element = null; + + switch(e.key) { + case ' ': + case 'Enter': + e.currentTarget.click(); + break; + case 'ArrowDown': + element = this.listNode.childNodes[index + 1] || this.listNode.firstChild; + break; + case 'ArrowUp': + element = this.listNode.childNodes[index - 1] || this.listNode.lastChild; + break; + case 'Tab': + if (e.shiftKey) { + element = this.listNode.childNodes[index - 1] || this.listNode.lastChild; + } else { + element = this.listNode.childNodes[index + 1] || this.listNode.firstChild; + } + break; + case 'Home': + element = this.listNode.firstChild; + break; + case 'End': + element = this.listNode.lastChild; + break; + } + + if (element) { + element.focus(); + e.preventDefault(); + e.stopPropagation(); + } + } + + handleSearchKeyDown = e => { + let element = null; + + switch(e.key) { + case 'Tab': + case 'ArrowDown': + element = this.listNode.firstChild; + + if (element) { + element.focus(); + e.preventDefault(); + e.stopPropagation(); + } + + break; + } + } + + handleClear = () => { + this.setState({ searchValue: '' }); + } + + handleItemClick = e => { + const value = e.currentTarget.getAttribute('data-index'); + + e.preventDefault(); + + this.props.onSelectFilter(value); + } + + handleNewFilterClick = e => { + e.preventDefault(); + + this.props.onNewFilter(this.state.searchValue); + }; + + render () { + const { intl } = this.props; + + const { searchValue } = this.state; + const isSearching = searchValue !== ''; + const results = this.search(); + + return ( + +

+

+ +
+ + +
+ +
+ {results.map(this.renderItem)} + {isSearching && this.renderCreateNew(searchValue) } +
+ +
+ ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/filter_modal.js b/app/javascript/mastodon/features/ui/components/filter_modal.js new file mode 100644 index 000000000..376db961d --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/filter_modal.js @@ -0,0 +1,134 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import { fetchStatus } from 'mastodon/actions/statuses'; +import { fetchFilters, createFilter, createFilterStatus } from 'mastodon/actions/filters'; +import PropTypes from 'prop-types'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import IconButton from 'mastodon/components/icon_button'; +import SelectFilter from 'mastodon/features/filters/select_filter'; +import AddedToFilter from 'mastodon/features/filters/added_to_filter'; + +const messages = defineMessages({ + close: { id: 'lightbox.close', defaultMessage: 'Close' }, +}); + +export default @connect(undefined) +@injectIntl +class FilterModal extends ImmutablePureComponent { + + static propTypes = { + statusId: PropTypes.string.isRequired, + contextType: PropTypes.string, + dispatch: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + state = { + step: 'select', + filterId: null, + isSubmitting: false, + isSubmitted: false, + }; + + handleNewFilterSuccess = (result) => { + this.handleSelectFilter(result.id); + }; + + handleSuccess = () => { + const { dispatch, statusId } = this.props; + dispatch(fetchStatus(statusId, true)); + this.setState({ isSubmitting: false, isSubmitted: true, step: 'submitted' }); + }; + + handleFail = () => { + this.setState({ isSubmitting: false }); + }; + + handleNextStep = step => { + this.setState({ step }); + }; + + handleSelectFilter = (filterId) => { + const { dispatch, statusId } = this.props; + + this.setState({ isSubmitting: true, filterId }); + + dispatch(createFilterStatus({ + filter_id: filterId, + status_id: statusId, + }, this.handleSuccess, this.handleFail)); + }; + + handleNewFilter = (title) => { + const { dispatch } = this.props; + + this.setState({ isSubmitting: true }); + + dispatch(createFilter({ + title, + context: ['home', 'notifications', 'public', 'thread', 'account'], + action: 'warn', + }, this.handleNewFilterSuccess, this.handleFail)); + }; + + componentDidMount () { + const { dispatch } = this.props; + + dispatch(fetchFilters()); + } + + render () { + const { + intl, + statusId, + contextType, + onClose, + } = this.props; + + const { + step, + filterId, + } = this.state; + + let stepComponent; + + switch(step) { + case 'select': + stepComponent = ( + + ); + break; + case 'create': + stepComponent = null; + break; + case 'submitted': + stepComponent = ( + + ); + } + + return ( +
+
+ + +
+ +
+ {stepComponent} +
+
+ ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 3fc235849..b2c30e079 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -20,6 +20,7 @@ import { ListEditor, ListAdder, CompareHistoryModal, + FilterModal, } from 'mastodon/features/ui/util/async-components'; const MODAL_COMPONENTS = { @@ -37,6 +38,7 @@ const MODAL_COMPONENTS = { 'FOCAL_POINT': () => Promise.resolve({ default: FocalPointModal }), 'LIST_ADDER': ListAdder, 'COMPARE_HISTORY': CompareHistoryModal, + 'FILTER': FilterModal, }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index 92c683e2f..29b06206a 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -161,3 +161,7 @@ export function CompareHistoryModal () { export function Explore () { return import(/* webpackChunkName: "features/explore" */'../../explore'); } + +export function FilterModal () { + return import(/*webpackChunkName: "modals/filter_modal" */'../components/filter_modal'); +} diff --git a/app/javascript/mastodon/reducers/filters.js b/app/javascript/mastodon/reducers/filters.js index 14b704027..cc1d3349c 100644 --- a/app/javascript/mastodon/reducers/filters.js +++ b/app/javascript/mastodon/reducers/filters.js @@ -1,4 +1,5 @@ import { FILTERS_IMPORT } from '../actions/importer'; +import { FILTERS_FETCH_SUCCESS, FILTERS_CREATE_SUCCESS } from '../actions/filters'; import { Map as ImmutableMap, is, fromJS } from 'immutable'; const normalizeFilter = (state, filter) => { @@ -7,13 +8,17 @@ const normalizeFilter = (state, filter) => { title: filter.title, context: filter.context, filter_action: filter.filter_action, + keywords: filter.keywords, expires_at: filter.expires_at ? Date.parse(filter.expires_at) : null, }); if (is(state.get(filter.id), normalizedFilter)) { return state; } else { - return state.set(filter.id, normalizedFilter); + // Do not overwrite keywords when receiving a partial filter + return state.update(filter.id, ImmutableMap(), (old) => ( + old.mergeWith(((old_value, new_value) => (new_value === undefined ? old_value : new_value)), normalizedFilter) + )); } }; @@ -27,6 +32,10 @@ const normalizeFilters = (state, filters) => { export default function filters(state = ImmutableMap(), action) { switch(action.type) { + case FILTERS_CREATE_SUCCESS: + return normalizeFilter(state, action.filter); + case FILTERS_FETCH_SUCCESS: + //TODO: handle deleting obsolete filters case FILTERS_IMPORT: return normalizeFilters(state, action.filters); default: diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index 187e3306d..3dd7f4897 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -1,5 +1,6 @@ import { createSelector } from 'reselect'; import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; +import { toServerSideType } from 'mastodon/utils/filters'; import { me } from '../initial_state'; const getAccountBase = (state, id) => state.getIn(['accounts', id], null); @@ -20,23 +21,6 @@ export const makeGetAccount = () => { }); }; -const toServerSideType = columnType => { - switch (columnType) { - case 'home': - case 'notifications': - case 'public': - case 'thread': - case 'account': - return columnType; - default: - if (columnType.indexOf('list:') > -1) { - return 'home'; - } else { - return 'public'; // community, account, hashtag - } - } -}; - const getFilters = (state, { contextType }) => { if (!contextType) return null; @@ -73,6 +57,7 @@ export const makeGetStatus = () => { if (filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) { return null; } + filterResults = filterResults.filter(result => filters.has(result.get('filter'))); if (!filterResults.isEmpty()) { filtered = filterResults.map(result => filters.getIn([result.get('filter'), 'title'])); } diff --git a/app/javascript/mastodon/utils/filters.js b/app/javascript/mastodon/utils/filters.js new file mode 100644 index 000000000..97b433a99 --- /dev/null +++ b/app/javascript/mastodon/utils/filters.js @@ -0,0 +1,16 @@ +export const toServerSideType = columnType => { + switch (columnType) { + case 'home': + case 'notifications': + case 'public': + case 'thread': + case 'account': + return columnType; + default: + if (columnType.indexOf('list:') > -1) { + return 'home'; + } else { + return 'public'; // community, account, hashtag + } + } +}; diff --git a/app/javascript/mastodon/utils/icons.js b/app/javascript/mastodon/utils/icons.js new file mode 100644 index 000000000..be566032e --- /dev/null +++ b/app/javascript/mastodon/utils/icons.js @@ -0,0 +1,13 @@ +// Copied from emoji-mart for consistency with emoji picker and since +// they don't export the icons in the package +export const loupeIcon = ( + + + +); + +export const deleteIcon = ( + + + +); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index a0a39812b..f5377a858 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -5233,6 +5233,16 @@ a.status-card.compact:hover { line-height: 22px; color: lighten($inverted-text-color, 16%); margin-bottom: 30px; + + a { + text-decoration: none; + color: $inverted-text-color; + font-weight: 500; + + &:hover { + text-decoration: underline; + } + } } &__actions { @@ -5379,6 +5389,14 @@ a.status-card.compact:hover { background: transparent; margin: 15px 0; } + + .emoji-mart-search { + padding-right: 10px; + } + + .emoji-mart-search-icon { + right: 10px + 5px; + } } .report-modal__container { diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb index a7401362f..9b358d338 100644 --- a/app/models/concerns/account_interactions.rb +++ b/app/models/concerns/account_interactions.rb @@ -249,15 +249,7 @@ module AccountInteractions def status_matches_filters(status) active_filters = CustomFilter.cached_filters_for(id) - - filter_matches = active_filters.filter_map do |filter, rules| - next if rules[:keywords].blank? - - match = rules[:keywords].match(status.proper.searchable_text) - FilterResultPresenter.new(filter: filter, keyword_matches: [match.to_s]) unless match.nil? - end - - filter_matches + CustomFilter.apply_cached_filters(active_filters, status) end def followers_for_local_distribution diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb index 985eab125..da2a91493 100644 --- a/app/models/custom_filter.rb +++ b/app/models/custom_filter.rb @@ -34,6 +34,7 @@ class CustomFilter < ApplicationRecord belongs_to :account has_many :keywords, class_name: 'CustomFilterKeyword', foreign_key: :custom_filter_id, inverse_of: :custom_filter, dependent: :destroy + has_many :statuses, class_name: 'CustomFilterStatus', foreign_key: :custom_filter_id, inverse_of: :custom_filter, dependent: :destroy accepts_nested_attributes_for :keywords, reject_if: :all_blank, allow_destroy: true validates :title, :context, presence: true @@ -62,8 +63,10 @@ class CustomFilter < ApplicationRecord def self.cached_filters_for(account_id) active_filters = Rails.cache.fetch("filters:v3:#{account_id}") do + filters_hash = {} + scope = CustomFilterKeyword.includes(:custom_filter).where(custom_filter: { account_id: account_id }).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()')) - scope.to_a.group_by(&:custom_filter).map do |filter, keywords| + scope.to_a.group_by(&:custom_filter).each do |filter, keywords| keywords.map! do |keyword| if keyword.whole_word sb = /\A[[:word:]]/.match?(keyword.keyword) ? '\b' : '' @@ -74,13 +77,34 @@ class CustomFilter < ApplicationRecord /#{Regexp.escape(keyword.keyword)}/i end end - [filter, { keywords: Regexp.union(keywords) }] + + filters_hash[filter.id] = { keywords: Regexp.union(keywords), filter: filter } + end.to_h + + scope = CustomFilterStatus.includes(:custom_filter).where(custom_filter: { account_id: account_id }).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()')) + scope.to_a.group_by(&:custom_filter).each do |filter, statuses| + filters_hash[filter.id] ||= { filter: filter } + filters_hash[filter.id].merge!(status_ids: statuses.map(&:status_id)) end + + filters_hash.values.map { |cache| [cache.delete(:filter), cache] } end.to_a active_filters.select { |custom_filter, _| !custom_filter.expired? } end + def self.apply_cached_filters(cached_filters, status) + cached_filters.filter_map do |filter, rules| + match = rules[:keywords].match(status.proper.searchable_text) if rules[:keywords].present? + keyword_matches = [match.to_s] unless match.nil? + + status_matches = [status.id, status.reblog_of_id].compact & rules[:status_ids] if rules[:status_ids].present? + + next if keyword_matches.blank? && status_matches.blank? + FilterResultPresenter.new(filter: filter, keyword_matches: keyword_matches, status_matches: status_matches) + end + end + def prepare_cache_invalidation! @should_invalidate_cache = true end diff --git a/app/models/custom_filter_status.rb b/app/models/custom_filter_status.rb new file mode 100644 index 000000000..b6bea1394 --- /dev/null +++ b/app/models/custom_filter_status.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true +# == Schema Information +# +# Table name: custom_filter_statuses +# +# id :bigint(8) not null, primary key +# custom_filter_id :bigint(8) not null +# status_id :bigint(8) default(""), not null +# created_at :datetime not null +# updated_at :datetime not null +# + +class CustomFilterStatus < ApplicationRecord + belongs_to :custom_filter + belongs_to :status + + validates :status, uniqueness: { scope: :custom_filter } + validate :validate_status_access + + before_save :prepare_cache_invalidation! + before_destroy :prepare_cache_invalidation! + after_commit :invalidate_cache! + + private + + def validate_status_access + errors.add(:status_id, :invalid) unless StatusPolicy.new(custom_filter.account, status).show? + end + + def prepare_cache_invalidation! + custom_filter.prepare_cache_invalidation! + end + + def invalidate_cache! + custom_filter.invalidate_cache! + end +end diff --git a/app/models/form/status_filter_batch_action.rb b/app/models/form/status_filter_batch_action.rb new file mode 100644 index 000000000..d87bd5cc4 --- /dev/null +++ b/app/models/form/status_filter_batch_action.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +class Form::StatusFilterBatchAction + include ActiveModel::Model + include AccountableConcern + include Authorization + + attr_accessor :current_account, :type, + :status_filter_ids, :filter_id + + def save! + process_action! + end + + private + + def status_filters + filter = current_account.custom_filters.find(filter_id) + filter.statuses.where(id: status_filter_ids) + end + + def process_action! + return if status_filter_ids.empty? + + case type + when 'remove' + handle_remove! + end + end + + def handle_remove! + status_filters.destroy_all + end +end diff --git a/app/presenters/filter_result_presenter.rb b/app/presenters/filter_result_presenter.rb index 677225f5e..1e9e8f3c1 100644 --- a/app/presenters/filter_result_presenter.rb +++ b/app/presenters/filter_result_presenter.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class FilterResultPresenter < ActiveModelSerializers::Model - attributes :filter, :keyword_matches + attributes :filter, :keyword_matches, :status_matches end diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb index d7ffb1954..be818a2de 100644 --- a/app/presenters/status_relationships_presenter.rb +++ b/app/presenters/status_relationships_presenter.rb @@ -33,12 +33,7 @@ class StatusRelationshipsPresenter active_filters = CustomFilter.cached_filters_for(current_account_id) @filters_map = statuses.each_with_object({}) do |status, h| - filter_matches = active_filters.filter_map do |filter, rules| - next if rules[:keywords].blank? - - match = rules[:keywords].match(status.proper.searchable_text) - FilterResultPresenter.new(filter: filter, keyword_matches: [match.to_s]) unless match.nil? - end + filter_matches = CustomFilter.apply_cached_filters(active_filters, status) unless filter_matches.empty? h[status.id] = filter_matches diff --git a/app/serializers/rest/filter_result_serializer.rb b/app/serializers/rest/filter_result_serializer.rb index 0ef4db79a..54ead2f1f 100644 --- a/app/serializers/rest/filter_result_serializer.rb +++ b/app/serializers/rest/filter_result_serializer.rb @@ -3,4 +3,9 @@ class REST::FilterResultSerializer < ActiveModel::Serializer belongs_to :filter, serializer: REST::FilterSerializer has_many :keyword_matches + has_many :status_matches + + def status_matches + object.status_matches&.map(&:to_s) + end end diff --git a/app/serializers/rest/filter_serializer.rb b/app/serializers/rest/filter_serializer.rb index 98d7edb17..8816dd807 100644 --- a/app/serializers/rest/filter_serializer.rb +++ b/app/serializers/rest/filter_serializer.rb @@ -3,6 +3,7 @@ class REST::FilterSerializer < ActiveModel::Serializer attributes :id, :title, :context, :expires_at, :filter_action has_many :keywords, serializer: REST::FilterKeywordSerializer, if: :rules_requested? + has_many :statuses, serializer: REST::FilterStatusSerializer, if: :rules_requested? def id object.id.to_s diff --git a/app/serializers/rest/filter_status_serializer.rb b/app/serializers/rest/filter_status_serializer.rb new file mode 100644 index 000000000..6bcbaa249 --- /dev/null +++ b/app/serializers/rest/filter_status_serializer.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class REST::FilterStatusSerializer < ActiveModel::Serializer + attributes :id, :status_id + + def id + object.id.to_s + end + + def status_id + object.status_id.to_s + end +end diff --git a/app/views/filters/_filter.html.haml b/app/views/filters/_filter.html.haml index 2ab014081..9993ad2ee 100644 --- a/app/views/filters/_filter.html.haml +++ b/app/views/filters/_filter.html.haml @@ -22,6 +22,15 @@ - keywords = filter.keywords.map(&:keyword) - keywords = keywords.take(5) + ['…'] if keywords.size > 5 # TODO = keywords.join(', ') + - unless filter.statuses.empty? + %li.permissions-list__item + .permissions-list__item__icon + = fa_icon('comment') + .permissions-list__item__text + .permissions-list__item__text__title + = t('filters.index.statuses', count: filter.statuses.size) + .permissions-list__item__text__type + = t('filters.index.statuses_long', count: filter.statuses.size) .announcements-list__item__action-bar .announcements-list__item__meta diff --git a/app/views/filters/_filter_fields.html.haml b/app/views/filters/_filter_fields.html.haml index 1a52faa7a..c58978f5a 100644 --- a/app/views/filters/_filter_fields.html.haml +++ b/app/views/filters/_filter_fields.html.haml @@ -14,6 +14,13 @@ %hr.spacer/ +- unless f.object.statuses.empty? + %h4= t('filters.edit.statuses') + + %p.muted-hint= t('filters.edit.statuses_hint_html', path: filter_statuses_path(f.object)) + + %hr.spacer/ + %h4= t('filters.edit.keywords') .table-wrapper diff --git a/app/views/filters/statuses/_status_filter.html.haml b/app/views/filters/statuses/_status_filter.html.haml new file mode 100644 index 000000000..ba1170cf9 --- /dev/null +++ b/app/views/filters/statuses/_status_filter.html.haml @@ -0,0 +1,37 @@ +- status = status_filter.status.proper + +.batch-table__row + %label.batch-table__row__select.batch-checkbox + = f.check_box :status_filter_ids, { multiple: true, include_hidden: false }, status_filter.id + .batch-table__row__content + .status__content>< + - if status.spoiler_text.blank? + = prerender_custom_emojis(status_content_format(status), status.emojis) + - else + %details< + %summary>< + %strong> Content warning: #{prerender_custom_emojis(h(status.spoiler_text), status.emojis)} + = prerender_custom_emojis(status_content_format(status), status.emojis) + + - status.ordered_media_attachments.each do |media_attachment| + %abbr{ title: media_attachment.description } + = fa_icon 'link' + = media_attachment.file_file_name + + .detailed-status__meta + = link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'name-tag', target: '_blank', rel: 'noopener noreferrer' do + = image_tag(status.account.avatar.url, width: 15, height: 15, alt: display_name(status.account), class: 'avatar') + .username= status.account.acct + · + = link_to ActivityPub::TagManager.instance.url_for(status), class: 'detailed-status__datetime', target: stream_link_target, rel: 'noopener noreferrer' do + %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) + - if status.edited? + · + = t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')) + · + = fa_visibility_icon(status) + = t("statuses.visibilities.#{status.visibility}") + - if status.sensitive? + · + = fa_icon('eye-slash fw') + = t('stream_entries.sensitive_content') diff --git a/app/views/filters/statuses/index.html.haml b/app/views/filters/statuses/index.html.haml new file mode 100644 index 000000000..886de58fa --- /dev/null +++ b/app/views/filters/statuses/index.html.haml @@ -0,0 +1,38 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('filters.statuses.index.title') + \- + = @filter.title + +.filters + .back-link + = link_to edit_filter_path(@filter) do + = fa_icon 'chevron-left fw' + = t('filters.statuses.back_to_filter') + +%p.hint= t('filters.statuses.index.hint') + +%hr.spacer/ + += form_for(@status_filter_batch_action, url: batch_filter_statuses_path(@filter.id)) do |f| + = hidden_field_tag :page, params[:page] || 1 + + - Admin::StatusFilter::KEYS.each do |key| + = hidden_field_tag key, params[key] if params[key].present? + + .batch-table + .batch-table__toolbar + %label.batch-table__toolbar__select.batch-checkbox-all + = check_box_tag :batch_checkbox_all, nil, false + .batch-table__toolbar__actions + - unless @status_filters.empty? + = f.button safe_join([fa_icon('times'), t('filters.statuses.batch.remove')]), name: :remove, class: 'table-action-link', type: :submit + .batch-table__body + - if @status_filters.empty? + = nothing_here 'nothing-here--under-tabs' + - else + = render partial: 'status_filter', collection: @status_filters, locals: { f: f } + += paginate @status_filters diff --git a/config/locales/en.yml b/config/locales/en.yml index 2cd4f45ac..596cc1a28 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1181,6 +1181,8 @@ en: edit: add_keyword: Add keyword keywords: Keywords + statuses: Individual posts + statuses_hint_html: This filter applies to select individual posts regardless of whether they match the keywords below. You can review these posts and remove them from the filter by clicking here. title: Edit filter errors: deprecated_api_multiple_keywords: These parameters cannot be changed from this application because they apply to more than one filter keyword. Use a more recent application or the web interface. @@ -1194,10 +1196,23 @@ en: keywords: one: "%{count} keyword" other: "%{count} keywords" + statuses: + one: "%{count} post" + other: "%{count} posts" + statuses_long: + one: "%{count} individual post hidden" + other: "%{count} individual posts hidden" title: Filters new: save: Save new filter title: Add new filter + statuses: + back_to_filter: Back to filter + batch: + remove: Remove from filter + index: + hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the Web interface. + title: Filtered posts footer: developers: Developers more: More… diff --git a/config/routes.rb b/config/routes.rb index 7dc9f391d..dff0add3a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -177,7 +177,14 @@ Rails.application.routes.draw do resources :tags, only: [:show] resources :emojis, only: [:show] resources :invites, only: [:index, :create, :destroy] - resources :filters, except: [:show] + resources :filters, except: [:show] do + resources :statuses, only: [:index], controller: 'filters/statuses' do + collection do + post :batch + end + end + end + resource :relationships, only: [:show, :update] resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update] @@ -448,12 +455,14 @@ Rails.application.routes.draw do resources :trends, only: [:index], controller: 'trends/tags' resources :filters, only: [:index, :create, :show, :update, :destroy] do resources :keywords, only: [:index, :create], controller: 'filters/keywords' + resources :statuses, only: [:index, :create], controller: 'filters/statuses' end resources :endorsements, only: [:index] resources :markers, only: [:index, :create] namespace :filters do resources :keywords, only: [:show, :update, :destroy] + resources :statuses, only: [:show, :destroy] end namespace :apps do diff --git a/db/migrate/20220808101323_create_custom_filter_statuses.rb b/db/migrate/20220808101323_create_custom_filter_statuses.rb new file mode 100644 index 000000000..52f703749 --- /dev/null +++ b/db/migrate/20220808101323_create_custom_filter_statuses.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class CreateCustomFilterStatuses < ActiveRecord::Migration[6.1] + def change + create_table :custom_filter_statuses do |t| + t.belongs_to :custom_filter, foreign_key: { on_delete: :cascade }, null: false + t.belongs_to :status, foreign_key: { on_delete: :cascade }, null: false + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 2263dc7d7..15ab2e85e 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: 2022_07_14_171049) do +ActiveRecord::Schema.define(version: 2022_08_08_101323) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -348,6 +348,15 @@ ActiveRecord::Schema.define(version: 2022_07_14_171049) do t.index ["custom_filter_id"], name: "index_custom_filter_keywords_on_custom_filter_id" end + create_table "custom_filter_statuses", force: :cascade do |t| + t.bigint "custom_filter_id", null: false + t.bigint "status_id", null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["custom_filter_id"], name: "index_custom_filter_statuses_on_custom_filter_id" + t.index ["status_id"], name: "index_custom_filter_statuses_on_status_id" + end + create_table "custom_filters", force: :cascade do |t| t.bigint "account_id" t.datetime "expires_at" @@ -1113,6 +1122,8 @@ ActiveRecord::Schema.define(version: 2022_07_14_171049) do add_foreign_key "conversation_mutes", "accounts", name: "fk_225b4212bb", on_delete: :cascade add_foreign_key "conversation_mutes", "conversations", on_delete: :cascade add_foreign_key "custom_filter_keywords", "custom_filters", on_delete: :cascade + add_foreign_key "custom_filter_statuses", "custom_filters", on_delete: :cascade + add_foreign_key "custom_filter_statuses", "statuses", on_delete: :cascade add_foreign_key "custom_filters", "accounts", on_delete: :cascade add_foreign_key "devices", "accounts", on_delete: :cascade add_foreign_key "devices", "oauth_access_tokens", column: "access_token_id", on_delete: :cascade diff --git a/spec/controllers/api/v1/filters/statuses_controller_spec.rb b/spec/controllers/api/v1/filters/statuses_controller_spec.rb new file mode 100644 index 000000000..3b2399dd8 --- /dev/null +++ b/spec/controllers/api/v1/filters/statuses_controller_spec.rb @@ -0,0 +1,116 @@ +require 'rails_helper' + +RSpec.describe Api::V1::Filters::StatusesController, type: :controller do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:other_user) { Fabricate(:user) } + let(:other_filter) { Fabricate(:custom_filter, account: other_user.account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + let(:scopes) { 'read:filters' } + let!(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) } + + it 'returns http success' do + get :index, params: { filter_id: filter.id } + expect(response).to have_http_status(200) + end + + context "when trying to access another's user filters" do + it 'returns http not found' do + get :index, params: { filter_id: other_filter.id } + expect(response).to have_http_status(404) + end + end + end + + describe 'POST #create' do + let(:scopes) { 'write:filters' } + let(:filter_id) { filter.id } + let!(:status) { Fabricate(:status) } + + before do + post :create, params: { filter_id: filter_id, status_id: status.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns a status filter' do + json = body_as_json + expect(json[:status_id]).to eq status.id.to_s + end + + it 'creates a status filter' do + filter = user.account.custom_filters.first + expect(filter).to_not be_nil + expect(filter.statuses.pluck(:status_id)).to eq [status.id] + end + + context "when trying to add to another another's user filters" do + let(:filter_id) { other_filter.id } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end + + describe 'GET #show' do + let(:scopes) { 'read:filters' } + let!(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) } + + before do + get :show, params: { id: status_filter.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns expected data' do + json = body_as_json + expect(json[:status_id]).to eq status_filter.status_id.to_s + end + + context "when trying to access another user's filter keyword" do + let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: other_filter) } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end + + describe 'DELETE #destroy' do + let(:scopes) { 'write:filters' } + let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) } + + before do + delete :destroy, params: { id: status_filter.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'removes the filter' do + expect { status_filter.reload }.to raise_error ActiveRecord::RecordNotFound + end + + context "when trying to update another user's filter keyword" do + let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: other_filter) } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end +end diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb index 4d104a198..24810a5d2 100644 --- a/spec/controllers/api/v1/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/statuses_controller_spec.rb @@ -47,6 +47,33 @@ RSpec.describe Api::V1::StatusesController, type: :controller do end end + context 'when post is explicitly filtered' do + let(:status) { Fabricate(:status, text: 'hello world') } + + before do + filter = user.account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide) + filter.statuses.create!(status_id: status.id) + end + + it 'returns http success' do + get :show, params: { id: status.id } + expect(response).to have_http_status(200) + end + + it 'returns filter information' do + get :show, params: { id: status.id } + json = body_as_json + expect(json[:filtered][0]).to include({ + filter: a_hash_including({ + id: user.account.custom_filters.first.id.to_s, + title: 'filter1', + filter_action: 'hide', + }), + status_matches: [status.id.to_s], + }) + end + end + context 'when reblog includes filtered terms' do let(:status) { Fabricate(:status, reblog: Fabricate(:status, text: 'this toot is about that banned word')) } diff --git a/spec/fabricators/custom_filter_status_fabricator.rb b/spec/fabricators/custom_filter_status_fabricator.rb new file mode 100644 index 000000000..d082b81c5 --- /dev/null +++ b/spec/fabricators/custom_filter_status_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator(:custom_filter_status) do + custom_filter + status +end diff --git a/spec/presenters/status_relationships_presenter_spec.rb b/spec/presenters/status_relationships_presenter_spec.rb index 5cd4929a6..eaab922fd 100644 --- a/spec/presenters/status_relationships_presenter_spec.rb +++ b/spec/presenters/status_relationships_presenter_spec.rb @@ -94,5 +94,32 @@ RSpec.describe StatusRelationshipsPresenter do expect(matched_filters[0].keyword_matches).to eq ['irrelevant'] end end + + context 'when post includes filtered individual statuses' do + let(:statuses) { [Fabricate(:status, text: 'hello world'), Fabricate(:status, reblog: Fabricate(:status, text: 'this toot is about an irrelevant word'))] } + let(:options) { {} } + + before do + filter = Account.find(current_account_id).custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide) + filter.statuses.create!(status_id: statuses[0].id) + filter.statuses.create!(status_id: statuses[1].reblog_of_id) + end + + it 'sets @filters_map to filter top-level status' do + matched_filters = presenter.filters_map[statuses[0].id] + expect(matched_filters.size).to eq 1 + + expect(matched_filters[0].filter.title).to eq 'filter1' + expect(matched_filters[0].status_matches).to eq [statuses[0].id] + end + + it 'sets @filters_map to filter reblogged status' do + matched_filters = presenter.filters_map[statuses[1].reblog_of_id] + expect(matched_filters.size).to eq 1 + + expect(matched_filters[0].filter.title).to eq 'filter1' + expect(matched_filters[0].status_matches).to eq [statuses[1].reblog_of_id] + end + end end end From afb8bc97d08c2738da7873ca42fea68e4672d65b Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:29:00 +0200 Subject: [PATCH 071/280] Fix quickly switching notification filters resulting in empty or incorrect list (#18960) --- app/javascript/mastodon/actions/notifications.js | 6 +++--- app/javascript/mastodon/reducers/notifications.js | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 3c42f71da..7f62e6c04 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -141,13 +141,13 @@ const excludeTypesFromFilter = filter => { const noOp = () => {}; -export function expandNotifications({ maxId } = {}, done = noOp) { +export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { return (dispatch, getState) => { const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); const notifications = getState().get('notifications'); const isLoadingMore = !!maxId; - if (notifications.get('isLoading')) { + if (notifications.get('isLoading') && !forceLoad) { done(); return; } @@ -243,7 +243,7 @@ export function setFilter (filterType) { path: ['notifications', 'quickFilter', 'active'], value: filterType, }); - dispatch(expandNotifications()); + dispatch(expandNotifications({ forceLoad: true })); dispatch(saveSettings()); }; }; diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index 4563118ea..eb34edb63 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -41,7 +41,7 @@ const initialState = ImmutableMap({ lastReadId: '0', readMarkerId: '0', isTabVisible: true, - isLoading: false, + isLoading: 0, browserSupport: false, browserPermission: 'default', }); @@ -115,7 +115,7 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece } } - mutable.set('isLoading', false); + mutable.update('isLoading', (nbLoading) => nbLoading - 1); }); }; @@ -214,9 +214,9 @@ export default function notifications(state = initialState, action) { case NOTIFICATIONS_LOAD_PENDING: return state.update('items', list => state.get('pendingItems').concat(list.take(40))).set('pendingItems', ImmutableList()).set('unread', 0); case NOTIFICATIONS_EXPAND_REQUEST: - return state.set('isLoading', true); + return state.update('isLoading', (nbLoading) => nbLoading + 1); case NOTIFICATIONS_EXPAND_FAIL: - return state.set('isLoading', false); + return state.update('isLoading', (nbLoading) => nbLoading - 1); case NOTIFICATIONS_FILTER_SET: return state.set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('hasMore', true); case NOTIFICATIONS_SCROLL_TOP: From ba745ca99a4ce4b953e11776827aabb68d621e79 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:30:53 +0200 Subject: [PATCH 073/280] Fix media modal link button (#18877) Fixes regression from #18697 --- app/javascript/mastodon/components/icon_button.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index 81743a1db..47945c475 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -131,17 +131,9 @@ export default class IconButton extends React.PureComponent { ); - if (href) { - return ( - + if (href && !this.prop) { + contents = ( + {contents} ); From 03241d884eb93c59695b4bad98c1725bdc544824 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:31:10 +0200 Subject: [PATCH 074/280] Add option for EMAIL_DOMAIN_DENYLIST/EMAIL_DOMAIN_ALLOWLIST to apply after confirmation (#18642) Fixes #18620 --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 60abaf77e..9833300cd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -94,7 +94,7 @@ class User < ApplicationRecord validates :invite_request, presence: true, on: :create, if: :invite_text_required? validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale? - validates_with BlacklistedEmailValidator, if: -> { !confirmed? } + validates_with BlacklistedEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? } validates_with EmailMxValidator, if: :validate_email_dns? validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create From af9c9936dd8c87746c9afa128483a93ad21a8b7e Mon Sep 17 00:00:00 2001 From: Arya K <73596856+gi-yt@users.noreply.github.com> Date: Thu, 25 Aug 2022 08:07:09 +0530 Subject: [PATCH 076/280] Fix I2P HTTPS redirect (#18929) --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 514c08cff..f41a0f197 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -47,7 +47,7 @@ Rails.application.configure do config.force_ssl = true config.ssl_options = { redirect: { - exclude: -> request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') } + exclude: -> request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') } } } From 66b8abf218a87e65fab8a7fae6fc6ea73c41d750 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Thu, 25 Aug 2022 11:37:40 +0900 Subject: [PATCH 077/280] Fix case where boolean was passed to onFilter on StatusActionBar (#18923) --- app/javascript/mastodon/components/status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index d36311c67..6fc132bf5 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -516,7 +516,7 @@ class Status extends ImmutablePureComponent { {media} - +
From 5d70a16a1417e53b0c6cc97def9688fda21f337c Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Thu, 25 Aug 2022 11:38:01 +0900 Subject: [PATCH 078/280] Fix action type for unfollowHashtag (#18924) --- app/javascript/mastodon/actions/tags.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/actions/tags.js b/app/javascript/mastodon/actions/tags.js index 216e5b541..37e79d4cb 100644 --- a/app/javascript/mastodon/actions/tags.js +++ b/app/javascript/mastodon/actions/tags.js @@ -75,18 +75,18 @@ export const unfollowHashtag = name => (dispatch, getState) => { }; export const unfollowHashtagRequest = name => ({ - type: HASHTAG_FETCH_REQUEST, + type: HASHTAG_UNFOLLOW_REQUEST, name, }); export const unfollowHashtagSuccess = (name, tag) => ({ - type: HASHTAG_FETCH_SUCCESS, + type: HASHTAG_UNFOLLOW_SUCCESS, name, tag, }); export const unfollowHashtagFail = (name, error) => ({ - type: HASHTAG_FETCH_FAIL, + type: HASHTAG_UNFOLLOW_FAIL, name, error, }); From 42ff4dce412752a05c2e3b990c93b08cb46ffd88 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Thu, 25 Aug 2022 11:38:34 +0900 Subject: [PATCH 079/280] Use type="color" on badge color input field (#18825) This informs browser to use interactive color picker --- app/views/admin/roles/_form.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/roles/_form.html.haml b/app/views/admin/roles/_form.html.haml index 9beaf619f..31f78f240 100644 --- a/app/views/admin/roles/_form.html.haml +++ b/app/views/admin/roles/_form.html.haml @@ -13,7 +13,7 @@ = f.input :position, wrapper: :with_label, input_html: { max: current_user.role.position - 1 } .fields-group - = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000' } + = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000', type: 'color' } %hr.spacer/ From 63a5514b29d44520058260cfb64c9fbf256e366a Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Thu, 25 Aug 2022 04:39:11 +0200 Subject: [PATCH 080/280] Allow S3 to use an existing secret (#18997) --- chart/templates/deployment-web.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index 5e22ca539..ab722c77b 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -70,6 +70,18 @@ spec: key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} + {{- if (and .Values.mastodon.s3.enabled .Values.mastodon.s3.existingSecret) }} + - name: "AWS_SECRET_ACCESS_KEY" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.s3.existingSecret }} + key: AWS_SECRET_ACCESS_KEY + - name: "AWS_ACCESS_KEY_ID" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.s3.existingSecret }} + key: AWS_ACCESS_KEY_ID + {{- end -}} {{- if (not .Values.mastodon.s3.enabled) }} volumeMounts: - name: assets From e682975afd9d476eaf938dfe753debfc20d4e603 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Thu, 25 Aug 2022 11:40:17 +0900 Subject: [PATCH 081/280] Add '--days' option to tootctl media refresh (#18425) * Add '--days' option to tootctl media refresh * Fix undefined scope --- lib/mastodon/media_cli.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 36ca71844..4904cc5eb 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -187,6 +187,7 @@ module Mastodon option :account, type: :string option :domain, type: :string option :status, type: :numeric + option :days, type: :numeric option :concurrency, type: :numeric, default: 5, aliases: [:c] option :verbose, type: :boolean, default: false, aliases: [:v] option :dry_run, type: :boolean, default: false @@ -204,6 +205,8 @@ module Mastodon Use the --domain option to download attachments from a specific domain. + Use the --days option to limit attachments created within days. + By default, attachments that are believed to be already downloaded will not be re-downloaded. To force re-download of every URL, use --force. DESC @@ -224,10 +227,16 @@ module Mastodon scope = MediaAttachment.where(account_id: account.id) elsif options[:domain] scope = MediaAttachment.joins(:account).merge(Account.by_domain_and_subdomains(options[:domain])) + elsif options[:days].present? + scope = MediaAttachment.remote else exit(1) end + if options[:days].present? + scope = scope.where('id > ?', Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false)) + end + processed, aggregate = parallelize_with_progress(scope) do |media_attachment| next if media_attachment.remote_url.blank? || (!options[:force] && media_attachment.file_file_name.present?) next if DomainBlock.reject_media?(media_attachment.account.domain) From 1165943968f8c79cfaccf30c392b14b4930d68e6 Mon Sep 17 00:00:00 2001 From: James Smith <119005+jgsmith@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:40:38 -0400 Subject: [PATCH 082/280] Mark job pods not to use Istio's envoy sidecar (#18415) * Mark job pods not to use Istio's envoy sidecar Istio injects sidecars into pods to implement mTLS between pods. Jobs usually don't know about this, so they don't signal the Envoy process to stop when the job finishes. Since at least one process is running in the pod, Kubernetes doesn't consider the job to be completed, so it lingers. By adding the `sidecar.istio.io/inject` annotation set to `"false"`, we let Istio know that it should not inject the sidecar. If Istio is not installed, then this has no impact. * Support arbitrary job annotations in the Helm chart Rather than focus on Istio, this allows arbitrary annotations for job pods. * Add in-line documentation for pod/job annotations --- chart/templates/cronjob-media-remove.yaml | 4 ++++ chart/templates/job-assets-precompile.yaml | 4 ++++ chart/templates/job-chewy-upgrade.yaml | 4 ++++ chart/templates/job-create-admin.yaml | 4 ++++ chart/templates/job-db-migrate.yaml | 4 ++++ chart/values.yaml | 6 ++++++ 6 files changed, 26 insertions(+) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 726e100cf..160aee204 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -12,6 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-media-remove + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 12 }} + {{- end }} spec: restartPolicy: OnFailure {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index 4aa8d1407..faa51a20d 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -12,6 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-assets-precompile + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index 16b4f75a7..ae6fb38e1 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -13,6 +13,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-chewy-upgrade + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index 486c0c357..659c00671 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -13,6 +13,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-create-admin + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 41ece64a2..8e4f70dfb 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -12,6 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-db-migrate + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/values.yaml b/chart/values.yaml index bd723567f..4b18a9dfa 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -281,8 +281,14 @@ serviceAccount: # If not set and create is true, a name is generated using the fullname template name: "" +# Kubernetes manages pods for jobs and pods for deployments differently, so you might +# need to apply different annotations to the two different sets of pods. The annotations +# set with podAnnotations will be added to all deployment-managed pods. podAnnotations: {} +# The annotations set with jobAnnotations will be added to all job pods. +jobAnnotations: {} + resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little From 861b35dd54d266bc0a40b3cacb28e5b82ff6faaa Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Thu, 25 Aug 2022 11:41:14 +0900 Subject: [PATCH 083/280] Support "http_hidden_proxy" ENV var for hidden service only proxy (#18427) * Support "http_hidden_proxy" ENV var for hidden service only proxy * Fallback to http_proxy if http_hidden_proxy is not set --- app/lib/request.rb | 18 +++++++++++++++--- config/initializers/http_client_proxy.rb | 17 +++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index 4289da933..f5123d776 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -31,7 +31,7 @@ class Request @url = Addressable::URI.parse(url).normalize @http_client = options.delete(:http_client) @options = options.merge(socket_class: use_proxy? ? ProxySocket : Socket) - @options = @options.merge(Rails.configuration.x.http_client_proxy) if use_proxy? + @options = @options.merge(proxy_url) if use_proxy? @headers = {} raise Mastodon::HostValidationError, 'Instance does not support hidden service connections' if block_hidden_service? @@ -141,11 +141,23 @@ class Request end def use_proxy? - Rails.configuration.x.http_client_proxy.present? + proxy_url.present? + end + + def proxy_url + if hidden_service? && Rails.configuration.x.http_client_hidden_proxy.present? + Rails.configuration.x.http_client_hidden_proxy + else + Rails.configuration.x.http_client_proxy + end end def block_hidden_service? - !Rails.configuration.x.access_to_hidden_service && /\.(onion|i2p)$/.match?(@url.host) + !Rails.configuration.x.access_to_hidden_service && hidden_service? + end + + def hidden_service? + /\.(onion|i2p)$/.match?(@url.host) end module ClientLimit diff --git a/config/initializers/http_client_proxy.rb b/config/initializers/http_client_proxy.rb index 7a9b7b86d..b29e9edd7 100644 --- a/config/initializers/http_client_proxy.rb +++ b/config/initializers/http_client_proxy.rb @@ -18,5 +18,22 @@ Rails.application.configure do }.compact end + if ENV['http_hidden_proxy'].present? + proxy = URI.parse(ENV['http_hidden_proxy']) + + raise "Unsupported proxy type: #{proxy.scheme}" unless %w(http https).include? proxy.scheme + raise "No proxy host" unless proxy.host + + host = proxy.host + host = host[1...-1] if host[0] == '[' # for IPv6 address + + config.x.http_client_hidden_proxy[:proxy] = { + proxy_address: host, + proxy_port: proxy.port, + proxy_username: proxy.user, + proxy_password: proxy.password, + }.compact + end + config.x.access_to_hidden_service = ENV['ALLOW_ACCESS_TO_HIDDEN_SERVICE'] == 'true' end From 68564a622ca812f7ce512aaa02d8dccfb9c70a1e Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Thu, 25 Aug 2022 11:38:01 +0900 Subject: [PATCH 084/280] [Glitch] Fix action type for unfollowHashtag Port 5d70a16a1417e53b0c6cc97def9688fda21f337c to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/actions/tags.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/tags.js b/app/javascript/flavours/glitch/actions/tags.js index 3933da8ba..4016cf96f 100644 --- a/app/javascript/flavours/glitch/actions/tags.js +++ b/app/javascript/flavours/glitch/actions/tags.js @@ -75,18 +75,18 @@ export const unfollowHashtag = name => (dispatch, getState) => { }; export const unfollowHashtagRequest = name => ({ - type: HASHTAG_FETCH_REQUEST, + type: HASHTAG_UNFOLLOW_REQUEST, name, }); export const unfollowHashtagSuccess = (name, tag) => ({ - type: HASHTAG_FETCH_SUCCESS, + type: HASHTAG_UNFOLLOW_SUCCESS, name, tag, }); export const unfollowHashtagFail = (name, error) => ({ - type: HASHTAG_FETCH_FAIL, + type: HASHTAG_UNFOLLOW_FAIL, name, error, }); From 3c80b62045b59f197ea5003357c03b16c1b1bac7 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:30:53 +0200 Subject: [PATCH 085/280] [Glitch] Fix media modal link button Port ba745ca99a4ce4b953e11776827aabb68d621e79 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/components/icon_button.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/app/javascript/flavours/glitch/components/icon_button.js b/app/javascript/flavours/glitch/components/icon_button.js index be2468d68..9ff745355 100644 --- a/app/javascript/flavours/glitch/components/icon_button.js +++ b/app/javascript/flavours/glitch/components/icon_button.js @@ -139,17 +139,9 @@ export default class IconButton extends React.PureComponent { ); - if (href) { - return ( - + if (href && !this.prop) { + contents = ( + {contents} ); From 448ed92f76981f40d6faf48ed9d798ee716a04b2 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:29:00 +0200 Subject: [PATCH 086/280] [Glitch] Fix quickly switching notification filters resulting in empty or incorrect list Port afb8bc97d08c2738da7873ca42fea68e4672d65b to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/notifications.js | 6 +++--- .../flavours/glitch/reducers/notifications.js | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/notifications.js b/app/javascript/flavours/glitch/actions/notifications.js index 3993b1ea5..63c1fe038 100644 --- a/app/javascript/flavours/glitch/actions/notifications.js +++ b/app/javascript/flavours/glitch/actions/notifications.js @@ -158,13 +158,13 @@ const excludeTypesFromFilter = filter => { const noOp = () => {}; -export function expandNotifications({ maxId } = {}, done = noOp) { +export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { return (dispatch, getState) => { const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); const notifications = getState().get('notifications'); const isLoadingMore = !!maxId; - if (notifications.get('isLoading')) { + if (notifications.get('isLoading') && !forceLoad) { done(); return; } @@ -343,7 +343,7 @@ export function setFilter (filterType) { path: ['notifications', 'quickFilter', 'active'], value: filterType, }); - dispatch(expandNotifications()); + dispatch(expandNotifications({ forceLoad: true })); dispatch(saveSettings()); }; }; diff --git a/app/javascript/flavours/glitch/reducers/notifications.js b/app/javascript/flavours/glitch/reducers/notifications.js index 1e61526b1..51d7886d7 100644 --- a/app/javascript/flavours/glitch/reducers/notifications.js +++ b/app/javascript/flavours/glitch/reducers/notifications.js @@ -43,7 +43,7 @@ const initialState = ImmutableMap({ unread: 0, lastReadId: '0', readMarkerId: '0', - isLoading: false, + isLoading: 0, cleaningMode: false, isTabVisible: true, browserSupport: false, @@ -121,7 +121,7 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece } } - mutable.set('isLoading', false); + mutable.update('isLoading', (nbLoading) => nbLoading - 1); }); }; @@ -249,10 +249,10 @@ export default function notifications(state = initialState, action) { return state.update('items', list => state.get('pendingItems').concat(list.take(40))).set('pendingItems', ImmutableList()).set('unread', 0); case NOTIFICATIONS_EXPAND_REQUEST: case NOTIFICATIONS_DELETE_MARKED_REQUEST: - return state.set('isLoading', true); + return state.set('isLoading', (nbLoading) => nbLoading + 1); case NOTIFICATIONS_DELETE_MARKED_FAIL: case NOTIFICATIONS_EXPAND_FAIL: - return state.set('isLoading', false); + return state.set('isLoading', (nbLoading) => nbLoading - 1); case NOTIFICATIONS_FILTER_SET: return state.set('items', ImmutableList()).set('hasMore', true); case NOTIFICATIONS_SCROLL_TOP: @@ -287,7 +287,7 @@ export default function notifications(state = initialState, action) { return markForDelete(state, action.id, action.yes); case NOTIFICATIONS_DELETE_MARKED_SUCCESS: - return deleteMarkedNotifs(state).set('isLoading', false); + return deleteMarkedNotifs(state).set('isLoading', (nbLoading) => nbLoading - 1); case NOTIFICATIONS_ENTER_CLEARING_MODE: st = state.set('cleaningMode', action.yes); From a15fe32e61f75e5aad28568491e3d33b63b860f8 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 28 Jun 2022 09:42:13 +0200 Subject: [PATCH 087/280] [Glitch] Revamp post filtering system Port front-end changes from 02851848e964675bb59919fa5fd1bdee2c1c29db to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/filters.js | 26 ------- .../flavours/glitch/actions/importer/index.js | 11 +++ .../glitch/actions/importer/normalizer.js | 12 +++ .../flavours/glitch/actions/notifications.js | 13 +--- .../flavours/glitch/actions/streaming.js | 4 - .../flavours/glitch/components/status.js | 24 +++--- .../glitch/components/status_action_bar.js | 9 ++- .../glitch/containers/status_container.js | 44 +---------- .../flavours/glitch/features/ui/index.js | 3 +- .../flavours/glitch/reducers/filters.js | 34 ++++++-- .../flavours/glitch/selectors/index.js | 78 +++++-------------- 11 files changed, 95 insertions(+), 163 deletions(-) delete mode 100644 app/javascript/flavours/glitch/actions/filters.js diff --git a/app/javascript/flavours/glitch/actions/filters.js b/app/javascript/flavours/glitch/actions/filters.js deleted file mode 100644 index 050b30322..000000000 --- a/app/javascript/flavours/glitch/actions/filters.js +++ /dev/null @@ -1,26 +0,0 @@ -import api from 'flavours/glitch/util/api'; - -export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST'; -export const FILTERS_FETCH_SUCCESS = 'FILTERS_FETCH_SUCCESS'; -export const FILTERS_FETCH_FAIL = 'FILTERS_FETCH_FAIL'; - -export const fetchFilters = () => (dispatch, getState) => { - dispatch({ - type: FILTERS_FETCH_REQUEST, - skipLoading: true, - }); - - api(getState) - .get('/api/v1/filters') - .then(({ data }) => dispatch({ - type: FILTERS_FETCH_SUCCESS, - filters: data, - skipLoading: true, - })) - .catch(err => dispatch({ - type: FILTERS_FETCH_FAIL, - err, - skipLoading: true, - skipAlert: true, - })); -}; diff --git a/app/javascript/flavours/glitch/actions/importer/index.js b/app/javascript/flavours/glitch/actions/importer/index.js index ec41fea6e..94d133b5f 100644 --- a/app/javascript/flavours/glitch/actions/importer/index.js +++ b/app/javascript/flavours/glitch/actions/importer/index.js @@ -5,6 +5,7 @@ export const ACCOUNTS_IMPORT = 'ACCOUNTS_IMPORT'; export const STATUS_IMPORT = 'STATUS_IMPORT'; export const STATUSES_IMPORT = 'STATUSES_IMPORT'; export const POLLS_IMPORT = 'POLLS_IMPORT'; +export const FILTERS_IMPORT = 'FILTERS_IMPORT'; function pushUnique(array, object) { if (array.every(element => element.id !== object.id)) { @@ -28,6 +29,10 @@ export function importStatuses(statuses) { return { type: STATUSES_IMPORT, statuses }; } +export function importFilters(filters) { + return { type: FILTERS_IMPORT, filters }; +} + export function importPolls(polls) { return { type: POLLS_IMPORT, polls }; } @@ -61,11 +66,16 @@ export function importFetchedStatuses(statuses) { const accounts = []; const normalStatuses = []; const polls = []; + const filters = []; function processStatus(status) { pushUnique(normalStatuses, normalizeStatus(status, getState().getIn(['statuses', status.id]), getState().get('local_settings'))); pushUnique(accounts, status.account); + if (status.filtered) { + status.filtered.forEach(result => pushUnique(filters, result.filter)); + } + if (status.reblog && status.reblog.id) { processStatus(status.reblog); } @@ -80,6 +90,7 @@ export function importFetchedStatuses(statuses) { dispatch(importPolls(polls)); dispatch(importFetchedAccounts(accounts)); dispatch(importStatuses(normalStatuses)); + dispatch(importFilters(filters)); }; } diff --git a/app/javascript/flavours/glitch/actions/importer/normalizer.js b/app/javascript/flavours/glitch/actions/importer/normalizer.js index c6acdbdbb..9950a720b 100644 --- a/app/javascript/flavours/glitch/actions/importer/normalizer.js +++ b/app/javascript/flavours/glitch/actions/importer/normalizer.js @@ -42,6 +42,14 @@ export function normalizeAccount(account) { return account; } +export function normalizeFilterResult(result) { + const normalResult = { ...result }; + + normalResult.filter = normalResult.filter.id; + + return normalResult; +} + export function normalizeStatus(status, normalOldStatus, settings) { const normalStatus = { ...status }; normalStatus.account = status.account.id; @@ -54,6 +62,10 @@ export function normalizeStatus(status, normalOldStatus, settings) { normalStatus.poll = status.poll.id; } + if (status.filtered) { + normalStatus.filtered = status.filtered.map(normalizeFilterResult); + } + // Only calculate these values when status first encountered and // when the underlying values change. Otherwise keep the ones // already in the reducer diff --git a/app/javascript/flavours/glitch/actions/notifications.js b/app/javascript/flavours/glitch/actions/notifications.js index 63c1fe038..ae3ee1a4c 100644 --- a/app/javascript/flavours/glitch/actions/notifications.js +++ b/app/javascript/flavours/glitch/actions/notifications.js @@ -12,10 +12,8 @@ import { saveSettings } from './settings'; import { defineMessages } from 'react-intl'; import { List as ImmutableList } from 'immutable'; import { unescapeHTML } from 'flavours/glitch/util/html'; -import { getFiltersRegex } from 'flavours/glitch/selectors'; import { usePendingItems as preferPendingItems } from 'flavours/glitch/util/initial_state'; import compareId from 'flavours/glitch/util/compare_id'; -import { searchTextFromRawStatus } from 'flavours/glitch/actions/importer/normalizer'; import { requestNotificationPermission } from 'flavours/glitch/util/notifications'; export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE'; @@ -74,20 +72,17 @@ export function updateNotifications(notification, intlMessages, intlLocale) { const showInColumn = activeFilter === 'all' ? getState().getIn(['settings', 'notifications', 'shows', notification.type], true) : activeFilter === notification.type; const showAlert = getState().getIn(['settings', 'notifications', 'alerts', notification.type], true); const playSound = getState().getIn(['settings', 'notifications', 'sounds', notification.type], true); - const filters = getFiltersRegex(getState(), { contextType: 'notifications' }); let filtered = false; - if (['mention', 'status'].includes(notification.type)) { - const dropRegex = filters[0]; - const regex = filters[1]; - const searchIndex = searchTextFromRawStatus(notification.status); + if (['mention', 'status'].includes(notification.type) && notification.status.filtered) { + const filters = notification.status.filtered.filter(result => result.filter.context.includes('notifications')); - if (dropRegex && dropRegex.test(searchIndex)) { + if (filters.some(result => result.filter.filter_action === 'hide')) { return; } - filtered = regex && regex.test(searchIndex); + filtered = filters.length > 0; } if (['follow_request'].includes(notification.type)) { diff --git a/app/javascript/flavours/glitch/actions/streaming.js b/app/javascript/flavours/glitch/actions/streaming.js index 90d6a0231..375728cb5 100644 --- a/app/javascript/flavours/glitch/actions/streaming.js +++ b/app/javascript/flavours/glitch/actions/streaming.js @@ -21,7 +21,6 @@ import { updateReaction as updateAnnouncementsReaction, deleteAnnouncement, } from './announcements'; -import { fetchFilters } from './filters'; import { getLocale } from 'mastodon/locales'; const { messages } = getLocale(); @@ -97,9 +96,6 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti case 'conversation': dispatch(updateConversations(JSON.parse(data.payload))); break; - case 'filters_changed': - dispatch(fetchFilters()); - break; case 'announcement': dispatch(updateAnnouncements(JSON.parse(data.payload))); break; diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index b2d9acebc..4ba602def 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -455,8 +455,8 @@ class Status extends ImmutablePureComponent { } handleUnfilterClick = e => { - const { onUnfilter, status } = this.props; - onUnfilter(status.get('reblog') ? status.get('reblog') : status, () => this.setState({ forceFilter: false })); + this.setState({ forceFilter: false }); + e.preventDefault(); } handleFilterClick = () => { @@ -557,8 +557,8 @@ class Status extends ImmutablePureComponent { ); } - const filtered = (status.get('filtered') || status.getIn(['reblog', 'filtered'])) && settings.get('filtering_behavior') !== 'content_warning'; - if (forceFilter === undefined ? filtered : forceFilter) { + const matchedFilters = status.get('filtered') || status.getIn(['reblog', 'filtered']); + if (this.state.forceFilter === undefined ? matchedFilters : this.state.forceFilter) { const minHandlers = this.props.muted ? {} : { moveUp: this.handleHotkeyMoveUp, moveDown: this.handleHotkeyMoveDown, @@ -567,13 +567,11 @@ class Status extends ImmutablePureComponent { return (
- - {settings.get('filtering_behavior') !== 'upstream' && ' '} - {settings.get('filtering_behavior') !== 'upstream' && ( - - )} + : {matchedFilters.join(', ')}. + {' '} +
); @@ -789,11 +787,11 @@ class Status extends ImmutablePureComponent { {!isCollapsed || !(muted || !settings.getIn(['collapsed', 'show_action_bar'])) ? ( ) : null} {notification ? ( diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js index 667afac5a..6581bc9ea 100644 --- a/app/javascript/flavours/glitch/components/status_action_bar.js +++ b/app/javascript/flavours/glitch/components/status_action_bar.js @@ -271,10 +271,6 @@ class StatusActionBar extends ImmutablePureComponent { ); - const filterButton = status.get('filtered') && ( - - ); - let replyButton = ( + ); + return (
{replyButton} @@ -316,6 +316,7 @@ class StatusActionBar extends ImmutablePureComponent { {shareButton} + {filterButton}
diff --git a/app/javascript/flavours/glitch/containers/status_container.js b/app/javascript/flavours/glitch/containers/status_container.js index 6c8f261e4..19781745b 100644 --- a/app/javascript/flavours/glitch/containers/status_container.js +++ b/app/javascript/flavours/glitch/containers/status_container.js @@ -1,7 +1,7 @@ import { connect } from 'react-redux'; import Status from 'flavours/glitch/components/status'; import { List as ImmutableList } from 'immutable'; -import { makeGetStatus, regexFromFilters, toServerSideType } from 'flavours/glitch/selectors'; +import { makeGetStatus } from 'flavours/glitch/selectors'; import { replyCompose, mentionCompose, @@ -201,48 +201,6 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ dispatch(initBlockModal(account)); }, - onUnfilter (status, onConfirm) { - dispatch((_, getState) => { - let state = getState(); - const serverSideType = toServerSideType(contextType); - const enabledFilters = state.get('filters', ImmutableList()).filter(filter => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || Date.parse(filter.get('expires_at')) > (new Date()))).toArray(); - const searchIndex = status.get('search_index'); - const matchingFilters = enabledFilters.filter(filter => regexFromFilters([filter]).test(searchIndex)); - dispatch(openModal('CONFIRM', { - message: [ - , -
- - - - -
    - {matchingFilters.map(filter => ( -
  • - {filter.get('phrase')} - {!!filterEditLink && ' '} - {!!filterEditLink && ( - - - - )} -
  • - ))} -
-
-
- ], - confirm: intl.formatMessage(messages.unfilterConfirm), - onConfirm: onConfirm, - })); - }); - }, - onReport (status) { dispatch(initReport(status.get('account'), status)); }, diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index 099ffc69c..2be6d9478 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -10,7 +10,6 @@ import { debounce } from 'lodash'; import { uploadCompose, resetCompose, changeComposeSpoilerness } from 'flavours/glitch/actions/compose'; import { expandHomeTimeline } from 'flavours/glitch/actions/timelines'; import { expandNotifications, notificationsSetVisibility } from 'flavours/glitch/actions/notifications'; -import { fetchFilters } from 'flavours/glitch/actions/filters'; import { fetchRules } from 'flavours/glitch/actions/rules'; import { clearHeight } from 'flavours/glitch/actions/height_cache'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'flavours/glitch/actions/markers'; @@ -402,7 +401,7 @@ class UI extends React.Component { this.props.dispatch(fetchMarkers()); this.props.dispatch(expandHomeTimeline()); this.props.dispatch(expandNotifications()); - setTimeout(() => this.props.dispatch(fetchFilters()), 500); + setTimeout(() => this.props.dispatch(fetchRules()), 3000); } diff --git a/app/javascript/flavours/glitch/reducers/filters.js b/app/javascript/flavours/glitch/reducers/filters.js index 33f0c6732..14b704027 100644 --- a/app/javascript/flavours/glitch/reducers/filters.js +++ b/app/javascript/flavours/glitch/reducers/filters.js @@ -1,10 +1,34 @@ -import { FILTERS_FETCH_SUCCESS } from '../actions/filters'; -import { List as ImmutableList, fromJS } from 'immutable'; +import { FILTERS_IMPORT } from '../actions/importer'; +import { Map as ImmutableMap, is, fromJS } from 'immutable'; -export default function filters(state = ImmutableList(), action) { +const normalizeFilter = (state, filter) => { + const normalizedFilter = fromJS({ + id: filter.id, + title: filter.title, + context: filter.context, + filter_action: filter.filter_action, + expires_at: filter.expires_at ? Date.parse(filter.expires_at) : null, + }); + + if (is(state.get(filter.id), normalizedFilter)) { + return state; + } else { + return state.set(filter.id, normalizedFilter); + } +}; + +const normalizeFilters = (state, filters) => { + filters.forEach(filter => { + state = normalizeFilter(state, filter); + }); + + return state; +}; + +export default function filters(state = ImmutableMap(), action) { switch(action.type) { - case FILTERS_FETCH_SUCCESS: - return fromJS(action.filters); + case FILTERS_IMPORT: + return normalizeFilters(state, action.filters); default: return state; } diff --git a/app/javascript/flavours/glitch/selectors/index.js b/app/javascript/flavours/glitch/selectors/index.js index d9aa8f140..63b10167c 100644 --- a/app/javascript/flavours/glitch/selectors/index.js +++ b/app/javascript/flavours/glitch/selectors/index.js @@ -41,15 +41,15 @@ export const toServerSideType = columnType => { const escapeRegExp = string => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string -export const regexFromFilters = filters => { - if (filters.size === 0) { +const regexFromKeywords = keywords => { + if (keywords.size === 0) { return null; } - return new RegExp(filters.map(filter => { - let expr = escapeRegExp(filter.get('phrase')); + return new RegExp(keywords.map(keyword_filter => { + let expr = escapeRegExp(keyword_filter.get('keyword')); - if (filter.get('whole_word')) { + if (keyword_filter.get('whole_word')) { if (/^[\w]/.test(expr)) { expr = `\\b${expr}`; } @@ -63,27 +63,15 @@ export const regexFromFilters = filters => { }).join('|'), 'i'); }; -// Memoize the filter regexps for each valid server contextType -const makeGetFiltersRegex = () => { - let memo = {}; +const getFilters = (state, { contextType }) => { + if (!contextType) return null; - return (state, { contextType }) => { - if (!contextType) return ImmutableList(); + const serverSideType = toServerSideType(contextType); + const now = new Date(); - const serverSideType = toServerSideType(contextType); - const filters = state.get('filters', ImmutableList()).filter(filter => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || Date.parse(filter.get('expires_at')) > (new Date()))); - - if (!memo[serverSideType] || !is(memo[serverSideType].filters, filters)) { - const dropRegex = regexFromFilters(filters.filter(filter => filter.get('irreversible'))); - const regex = regexFromFilters(filters); - memo[serverSideType] = { filters: filters, results: [dropRegex, regex] }; - } - return memo[serverSideType].results; - }; + return state.get('filters').filter((filter) => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || filter.get('expires_at') > now)); }; -export const getFiltersRegex = makeGetFiltersRegex(); - export const makeGetStatus = () => { return createSelector( [ @@ -91,56 +79,32 @@ export const makeGetStatus = () => { (state, { id }) => state.getIn(['statuses', state.getIn(['statuses', id, 'reblog'])]), (state, { id }) => state.getIn(['accounts', state.getIn(['statuses', id, 'account'])]), (state, { id }) => state.getIn(['accounts', state.getIn(['statuses', state.getIn(['statuses', id, 'reblog']), 'account'])]), - (state, _) => state.getIn(['local_settings', 'filtering_behavior']), - (state, _) => state.get('filters', ImmutableList()), - (_, { contextType }) => contextType, - getFiltersRegex, + getFilters, ], - (statusBase, statusReblog, accountBase, accountReblog, filteringBehavior, filters, contextType, filtersRegex) => { + (statusBase, statusReblog, accountBase, accountReblog, filters) => { if (!statusBase) { return null; } - const dropRegex = (accountReblog || accountBase).get('id') !== me && filtersRegex[0]; - - if (dropRegex && dropRegex.test(statusBase.get('reblog') ? statusReblog.get('search_index') : statusBase.get('search_index'))) { - return null; + let filtered = false; + if ((accountReblog || accountBase).get('id') !== me && filters) { + let filterResults = statusReblog?.get('filtered') || statusBase.get('filtered') || ImmutableList(); + if (filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) { + return null; + } + if (!filterResults.isEmpty()) { + filtered = filterResults.map(result => filters.getIn([result.get('filter'), 'title'])); + } } - const regex = (accountReblog || accountBase).get('id') !== me && filtersRegex[1]; - let filtered = false; - if (statusReblog) { - filtered = regex && regex.test(statusReblog.get('search_index')); statusReblog = statusReblog.set('account', accountReblog); statusReblog = statusReblog.set('filtered', filtered); } else { statusReblog = null; } - filtered = filtered || regex && regex.test(statusBase.get('search_index')); - - if (filtered && filteringBehavior === 'drop') { - return null; - } else if (filtered && filteringBehavior === 'content_warning') { - let spoilerText = (statusReblog || statusBase).get('spoiler_text', ''); - const searchIndex = (statusReblog || statusBase).get('search_index'); - const serverSideType = toServerSideType(contextType); - const enabledFilters = filters.filter(filter => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || Date.parse(filter.get('expires_at')) > (new Date()))).toArray(); - const matchingFilters = enabledFilters.filter(filter => { - const regexp = regexFromFilters([filter]); - return regexp.test(searchIndex) && !regexp.test(spoilerText); - }); - if (statusReblog) { - statusReblog = statusReblog.set('spoiler_text', matchingFilters.map(filter => filter.get('phrase')).concat([spoilerText]).filter(cw => !!cw).join(', ')); - statusReblog = statusReblog.update('spoilerHtml', '', spoilerText => matchingFilters.map(filter => escapeTextContentForBrowser(filter.get('phrase'))).concat([spoilerText]).filter(cw => !!cw).join(', ')); - } else { - statusBase = statusBase.set('spoiler_text', matchingFilters.map(filter => filter.get('phrase')).concat([spoilerText]).filter(cw => !!cw).join(', ')); - statusBase = statusBase.update('spoilerHtml', '', spoilerText => matchingFilters.map(filter => escapeTextContentForBrowser(filter.get('phrase'))).concat([spoilerText]).filter(cw => !!cw).join(', ')); - } - } - return statusBase.withMutations(map => { map.set('reblog', statusReblog); map.set('account', accountBase); From bbafe28fbc31f333d526103990b0c0b5d73f7eaf Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 30 Jun 2022 09:51:55 +0200 Subject: [PATCH 088/280] [Glitch] Fix reblogged statuses being erroneously shown as filtered Port 3c24f19afedc2169a7a343c5af4a8f892d863f0b to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/status.js | 2 +- app/javascript/flavours/glitch/selectors/index.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index 4ba602def..501bcd300 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -557,7 +557,7 @@ class Status extends ImmutablePureComponent { ); } - const matchedFilters = status.get('filtered') || status.getIn(['reblog', 'filtered']); + const matchedFilters = status.get('matched_filters'); if (this.state.forceFilter === undefined ? matchedFilters : this.state.forceFilter) { const minHandlers = this.props.muted ? {} : { moveUp: this.handleHotkeyMoveUp, diff --git a/app/javascript/flavours/glitch/selectors/index.js b/app/javascript/flavours/glitch/selectors/index.js index 63b10167c..91f9a81d9 100644 --- a/app/javascript/flavours/glitch/selectors/index.js +++ b/app/javascript/flavours/glitch/selectors/index.js @@ -100,7 +100,7 @@ export const makeGetStatus = () => { if (statusReblog) { statusReblog = statusReblog.set('account', accountReblog); - statusReblog = statusReblog.set('filtered', filtered); + statusReblog = statusReblog.set('matched_filters', filtered); } else { statusReblog = null; } @@ -108,7 +108,7 @@ export const makeGetStatus = () => { return statusBase.withMutations(map => { map.set('reblog', statusReblog); map.set('account', accountBase); - map.set('filtered', filtered); + map.set('matched_filters', filtered); }); }, ); From 93b6ad2c6c6d2b148d71bf3d4281313a331edb69 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 30 Jun 2022 10:39:29 +0200 Subject: [PATCH 089/280] [Glitch] Remove dead code in WebUI filtering code Port a233a9bfb5f384e89bdaef6e519fa20db2a99ae5 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/selectors/index.js | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/app/javascript/flavours/glitch/selectors/index.js b/app/javascript/flavours/glitch/selectors/index.js index 91f9a81d9..7caa5259f 100644 --- a/app/javascript/flavours/glitch/selectors/index.js +++ b/app/javascript/flavours/glitch/selectors/index.js @@ -1,6 +1,6 @@ import escapeTextContentForBrowser from 'escape-html'; import { createSelector } from 'reselect'; -import { List as ImmutableList, is } from 'immutable'; +import { List as ImmutableList } from 'immutable'; import { me } from 'flavours/glitch/util/initial_state'; const getAccountBase = (state, id) => state.getIn(['accounts', id], null); @@ -38,31 +38,6 @@ export const toServerSideType = columnType => { } }; -const escapeRegExp = string => - string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string - -const regexFromKeywords = keywords => { - if (keywords.size === 0) { - return null; - } - - return new RegExp(keywords.map(keyword_filter => { - let expr = escapeRegExp(keyword_filter.get('keyword')); - - if (keyword_filter.get('whole_word')) { - if (/^[\w]/.test(expr)) { - expr = `\\b${expr}`; - } - - if (/[\w]$/.test(expr)) { - expr = `${expr}\\b`; - } - } - - return expr; - }).join('|'), 'i'); -}; - const getFilters = (state, { contextType }) => { if (!contextType) return null; From 28f0dfc0b42cde1e9443df13cae471ee7bb9d988 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Thu, 25 Aug 2022 11:37:40 +0900 Subject: [PATCH 090/280] [Glitch] Fix case where boolean was passed to onFilter on StatusActionBar Port 66b8abf218a87e65fab8a7fae6fc6ea73c41d750 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index 501bcd300..1f1cca813 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -790,7 +790,7 @@ class Status extends ImmutablePureComponent { status={status} account={status.get('account')} showReplyCount={settings.get('show_reply_count')} - onFilter={matchedFilters && this.handleFilterClick} + onFilter={matchedFilters ? this.handleFilterClick : null} {...other} /> ) : null} From 0b733ca7909bb96269613ca05df7a91eb083d042 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:27:47 +0200 Subject: [PATCH 091/280] [Glitch] Add ability to filter individual posts Port 50487db1224851a49ee523bbc013d5f8686a7a55 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/filters.js | 93 +++++++++ .../flavours/glitch/actions/statuses.js | 4 +- .../flavours/glitch/components/status.js | 1 + .../glitch/components/status_action_bar.js | 16 +- .../glitch/containers/status_container.js | 7 + .../compose/components/language_dropdown.js | 19 +- .../features/filters/added_to_filter.js | 102 ++++++++++ .../glitch/features/filters/select_filter.js | 192 ++++++++++++++++++ .../features/ui/components/filter_modal.js | 134 ++++++++++++ .../features/ui/components/modal_root.js | 2 + .../flavours/glitch/reducers/filters.js | 11 +- .../flavours/glitch/selectors/index.js | 19 +- .../glitch/styles/components/modal.scss | 18 ++ .../flavours/glitch/util/async-components.js | 4 + .../flavours/glitch/util/filters.js | 16 ++ app/javascript/flavours/glitch/util/icons.js | 13 ++ 16 files changed, 612 insertions(+), 39 deletions(-) create mode 100644 app/javascript/flavours/glitch/actions/filters.js create mode 100644 app/javascript/flavours/glitch/features/filters/added_to_filter.js create mode 100644 app/javascript/flavours/glitch/features/filters/select_filter.js create mode 100644 app/javascript/flavours/glitch/features/ui/components/filter_modal.js create mode 100644 app/javascript/flavours/glitch/util/filters.js create mode 100644 app/javascript/flavours/glitch/util/icons.js diff --git a/app/javascript/flavours/glitch/actions/filters.js b/app/javascript/flavours/glitch/actions/filters.js new file mode 100644 index 000000000..9aa31028a --- /dev/null +++ b/app/javascript/flavours/glitch/actions/filters.js @@ -0,0 +1,93 @@ +import api from 'flavours/glitch/util/api'; +import { openModal } from './modal'; + +export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST'; +export const FILTERS_FETCH_SUCCESS = 'FILTERS_FETCH_SUCCESS'; +export const FILTERS_FETCH_FAIL = 'FILTERS_FETCH_FAIL'; + +export const FILTERS_STATUS_CREATE_REQUEST = 'FILTERS_STATUS_CREATE_REQUEST'; +export const FILTERS_STATUS_CREATE_SUCCESS = 'FILTERS_STATUS_CREATE_SUCCESS'; +export const FILTERS_STATUS_CREATE_FAIL = 'FILTERS_STATUS_CREATE_FAIL'; + +export const FILTERS_CREATE_REQUEST = 'FILTERS_CREATE_REQUEST'; +export const FILTERS_CREATE_SUCCESS = 'FILTERS_CREATE_SUCCESS'; +export const FILTERS_CREATE_FAIL = 'FILTERS_CREATE_FAIL'; + +export const initAddFilter = (status, { contextType }) => dispatch => + dispatch(openModal('FILTER', { + statusId: status?.get('id'), + contextType: contextType, + })); + +export const fetchFilters = () => (dispatch, getState) => { + dispatch({ + type: FILTERS_FETCH_REQUEST, + skipLoading: true, + }); + + api(getState) + .get('/api/v2/filters') + .then(({ data }) => dispatch({ + type: FILTERS_FETCH_SUCCESS, + filters: data, + skipLoading: true, + })) + .catch(err => dispatch({ + type: FILTERS_FETCH_FAIL, + err, + skipLoading: true, + skipAlert: true, + })); +}; + +export const createFilterStatus = (params, onSuccess, onFail) => (dispatch, getState) => { + dispatch(createFilterStatusRequest()); + + api(getState).post(`/api/v1/filters/${params.filter_id}/statuses`, params).then(response => { + dispatch(createFilterStatusSuccess(response.data)); + if (onSuccess) onSuccess(); + }).catch(error => { + dispatch(createFilterStatusFail(error)); + if (onFail) onFail(); + }); +}; + +export const createFilterStatusRequest = () => ({ + type: FILTERS_STATUS_CREATE_REQUEST, +}); + +export const createFilterStatusSuccess = filter_status => ({ + type: FILTERS_STATUS_CREATE_SUCCESS, + filter_status, +}); + +export const createFilterStatusFail = error => ({ + type: FILTERS_STATUS_CREATE_FAIL, + error, +}); + +export const createFilter = (params, onSuccess, onFail) => (dispatch, getState) => { + dispatch(createFilterRequest()); + + api(getState).post('/api/v2/filters', params).then(response => { + dispatch(createFilterSuccess(response.data)); + if (onSuccess) onSuccess(response.data); + }).catch(error => { + dispatch(createFilterFail(error)); + if (onFail) onFail(); + }); +}; + +export const createFilterRequest = () => ({ + type: FILTERS_CREATE_REQUEST, +}); + +export const createFilterSuccess = filter => ({ + type: FILTERS_CREATE_SUCCESS, + filter, +}); + +export const createFilterFail = error => ({ + type: FILTERS_CREATE_FAIL, + error, +}); diff --git a/app/javascript/flavours/glitch/actions/statuses.js b/app/javascript/flavours/glitch/actions/statuses.js index 1f223f22e..58c1d44a6 100644 --- a/app/javascript/flavours/glitch/actions/statuses.js +++ b/app/javascript/flavours/glitch/actions/statuses.js @@ -42,9 +42,9 @@ export function fetchStatusRequest(id, skipLoading) { }; }; -export function fetchStatus(id) { +export function fetchStatus(id, forceFetch = false) { return (dispatch, getState) => { - const skipLoading = getState().getIn(['statuses', id], null) !== null; + const skipLoading = !forceFetch && getState().getIn(['statuses', id], null) !== null; dispatch(fetchContext(id)); diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index 1f1cca813..e238456c5 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -79,6 +79,7 @@ class Status extends ImmutablePureComponent { onOpenMedia: PropTypes.func, onOpenVideo: PropTypes.func, onBlock: PropTypes.func, + onAddFilter: PropTypes.func, onEmbed: PropTypes.func, onHeightChange: PropTypes.func, onToggleHidden: PropTypes.func, diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js index 6581bc9ea..c0cd496ce 100644 --- a/app/javascript/flavours/glitch/components/status_action_bar.js +++ b/app/javascript/flavours/glitch/components/status_action_bar.js @@ -41,6 +41,7 @@ const messages = defineMessages({ copy: { id: 'status.copy', defaultMessage: 'Copy link to status' }, hide: { id: 'status.hide', defaultMessage: 'Hide toot' }, edited: { id: 'status.edited', defaultMessage: 'Edited {date}' }, + filter: { id: 'status.filter', defaultMessage: 'Filter this post' }, }); export default @injectIntl @@ -67,6 +68,7 @@ class StatusActionBar extends ImmutablePureComponent { onPin: PropTypes.func, onBookmark: PropTypes.func, onFilter: PropTypes.func, + onAddFilter: PropTypes.func, withDismiss: PropTypes.bool, showReplyCount: PropTypes.bool, scrollKey: PropTypes.string, @@ -193,10 +195,14 @@ class StatusActionBar extends ImmutablePureComponent { } } - handleFilterClick = () => { + handleHideClick = () => { this.props.onFilter(); } + handleFilterClick = () => { + this.props.onAddFilter(this.props.status); + } + render () { const { status, intl, withDismiss, showReplyCount, scrollKey } = this.props; @@ -238,6 +244,12 @@ class StatusActionBar extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick }); menu.push(null); + + if (!this.props.onFilter) { + menu.push({ text: intl.formatMessage(messages.filter), action: this.handleFilterClick }); + menu.push(null); + } + menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick }); menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick }); menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport }); @@ -306,7 +318,7 @@ class StatusActionBar extends ImmutablePureComponent { } const filterButton = this.props.onFilter && ( - + ); return ( diff --git a/app/javascript/flavours/glitch/containers/status_container.js b/app/javascript/flavours/glitch/containers/status_container.js index 19781745b..0ba2e712c 100644 --- a/app/javascript/flavours/glitch/containers/status_container.js +++ b/app/javascript/flavours/glitch/containers/status_container.js @@ -25,6 +25,9 @@ import { revealStatus, editStatus } from 'flavours/glitch/actions/statuses'; +import { + initAddFilter, +} from 'flavours/glitch/actions/filters'; import { initMuteModal } from 'flavours/glitch/actions/mutes'; import { initBlockModal } from 'flavours/glitch/actions/blocks'; import { initReport } from 'flavours/glitch/actions/reports'; @@ -205,6 +208,10 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ dispatch(initReport(status.get('account'), status)); }, + onAddFilter (status) { + dispatch(initAddFilter(status, { contextType })); + }, + onMute (account) { dispatch(initMuteModal(account)); }, diff --git a/app/javascript/flavours/glitch/features/compose/components/language_dropdown.js b/app/javascript/flavours/glitch/features/compose/components/language_dropdown.js index c8c503e58..035b0c0c3 100644 --- a/app/javascript/flavours/glitch/features/compose/components/language_dropdown.js +++ b/app/javascript/flavours/glitch/features/compose/components/language_dropdown.js @@ -8,6 +8,7 @@ import spring from 'react-motion/lib/spring'; import { supportsPassiveEvents } from 'detect-passive-events'; import classNames from 'classnames'; import { languages as preloadedLanguages } from 'flavours/glitch/util/initial_state'; +import { loupeIcon, deleteIcon } from 'flavours/glitch/util/icons'; import fuzzysort from 'fuzzysort'; const messages = defineMessages({ @@ -16,22 +17,6 @@ const messages = defineMessages({ clear: { id: 'emoji_button.clear', defaultMessage: 'Clear' }, }); -// Copied from emoji-mart for consistency with emoji picker and since -// they don't export the icons in the package -const icons = { - loupe: ( - - - - ), - - delete: ( - - - - ), -}; - const listenerOptions = supportsPassiveEvents ? { passive: true } : false; class LanguageDropdownMenu extends React.PureComponent { @@ -242,7 +227,7 @@ class LanguageDropdownMenu extends React.PureComponent {
- +
diff --git a/app/javascript/flavours/glitch/features/filters/added_to_filter.js b/app/javascript/flavours/glitch/features/filters/added_to_filter.js new file mode 100644 index 000000000..f777ca429 --- /dev/null +++ b/app/javascript/flavours/glitch/features/filters/added_to_filter.js @@ -0,0 +1,102 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { FormattedMessage } from 'react-intl'; +import { toServerSideType } from 'flavours/glitch/util/filters'; +import Button from 'flavours/glitch/components/button'; +import { connect } from 'react-redux'; + +const mapStateToProps = (state, { filterId }) => ({ + filter: state.getIn(['filters', filterId]), +}); + +export default @connect(mapStateToProps) +class AddedToFilter extends React.PureComponent { + + static propTypes = { + onClose: PropTypes.func.isRequired, + contextType: PropTypes.string, + filter: ImmutablePropTypes.map.isRequired, + dispatch: PropTypes.func.isRequired, + }; + + handleCloseClick = () => { + const { onClose } = this.props; + onClose(); + }; + + render () { + const { filter, contextType } = this.props; + + let expiredMessage = null; + if (filter.get('expires_at') && filter.get('expires_at') < new Date()) { + expiredMessage = ( + +

+

+ +

+
+ ); + } + + let contextMismatchMessage = null; + if (contextType && !filter.get('context').includes(toServerSideType(contextType))) { + contextMismatchMessage = ( + +

+

+ +

+
+ ); + } + + const settings_link = ( + + + + ); + + return ( + +

+

+ +

+ + {expiredMessage} + {contextMismatchMessage} + +

+

+ +

+ +
+ +
+ +
+ + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/filters/select_filter.js b/app/javascript/flavours/glitch/features/filters/select_filter.js new file mode 100644 index 000000000..5321dbb96 --- /dev/null +++ b/app/javascript/flavours/glitch/features/filters/select_filter.js @@ -0,0 +1,192 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { toServerSideType } from 'flavours/glitch/util/filters'; +import { loupeIcon, deleteIcon } from 'flavours/glitch/util/icons'; +import Icon from 'flavours/glitch/components/icon'; +import fuzzysort from 'fuzzysort'; + +const messages = defineMessages({ + search: { id: 'filter_modal.select_filter.search', defaultMessage: 'Search or create' }, + clear: { id: 'emoji_button.clear', defaultMessage: 'Clear' }, +}); + +const mapStateToProps = (state, { contextType }) => ({ + filters: Array.from(state.get('filters').values()).map((filter) => [ + filter.get('id'), + filter.get('title'), + filter.get('keywords')?.map((keyword) => keyword.get('keyword')).join('\n'), + filter.get('expires_at') && filter.get('expires_at') < new Date(), + contextType && !filter.get('context').includes(toServerSideType(contextType)), + ]), +}); + +export default @connect(mapStateToProps) +@injectIntl +class SelectFilter extends React.PureComponent { + + static propTypes = { + onSelectFilter: PropTypes.func.isRequired, + onNewFilter: PropTypes.func.isRequired, + filters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.object)), + intl: PropTypes.object.isRequired, + }; + + state = { + searchValue: '', + }; + + search () { + const { filters } = this.props; + const { searchValue } = this.state; + + if (searchValue === '') { + return filters; + } + + return fuzzysort.go(searchValue, filters, { + keys: ['1', '2'], + limit: 5, + threshold: -10000, + }).map(result => result.obj); + } + + renderItem = filter => { + let warning = null; + if (filter[3] || filter[4]) { + warning = ( + + ( + {filter[3] && } + {filter[3] && filter[4] && ', '} + {filter[4] && } + ) + + ); + } + + return ( +
+ {filter[1]} {warning} +
+ ); + } + + renderCreateNew (name) { + return ( +
+ +
+ ); + } + + handleSearchChange = ({ target }) => { + this.setState({ searchValue: target.value }); + } + + setListRef = c => { + this.listNode = c; + } + + handleKeyDown = e => { + const index = Array.from(this.listNode.childNodes).findIndex(node => node === e.currentTarget); + + let element = null; + + switch(e.key) { + case ' ': + case 'Enter': + e.currentTarget.click(); + break; + case 'ArrowDown': + element = this.listNode.childNodes[index + 1] || this.listNode.firstChild; + break; + case 'ArrowUp': + element = this.listNode.childNodes[index - 1] || this.listNode.lastChild; + break; + case 'Tab': + if (e.shiftKey) { + element = this.listNode.childNodes[index - 1] || this.listNode.lastChild; + } else { + element = this.listNode.childNodes[index + 1] || this.listNode.firstChild; + } + break; + case 'Home': + element = this.listNode.firstChild; + break; + case 'End': + element = this.listNode.lastChild; + break; + } + + if (element) { + element.focus(); + e.preventDefault(); + e.stopPropagation(); + } + } + + handleSearchKeyDown = e => { + let element = null; + + switch(e.key) { + case 'Tab': + case 'ArrowDown': + element = this.listNode.firstChild; + + if (element) { + element.focus(); + e.preventDefault(); + e.stopPropagation(); + } + + break; + } + } + + handleClear = () => { + this.setState({ searchValue: '' }); + } + + handleItemClick = e => { + const value = e.currentTarget.getAttribute('data-index'); + + e.preventDefault(); + + this.props.onSelectFilter(value); + } + + handleNewFilterClick = e => { + e.preventDefault(); + + this.props.onNewFilter(this.state.searchValue); + }; + + render () { + const { intl } = this.props; + + const { searchValue } = this.state; + const isSearching = searchValue !== ''; + const results = this.search(); + + return ( + +

+

+ +
+ + +
+ +
+ {results.map(this.renderItem)} + {isSearching && this.renderCreateNew(searchValue) } +
+ +
+ ); + } + +} diff --git a/app/javascript/flavours/glitch/features/ui/components/filter_modal.js b/app/javascript/flavours/glitch/features/ui/components/filter_modal.js new file mode 100644 index 000000000..d2482e733 --- /dev/null +++ b/app/javascript/flavours/glitch/features/ui/components/filter_modal.js @@ -0,0 +1,134 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import { fetchStatus } from 'flavours/glitch/actions/statuses'; +import { fetchFilters, createFilter, createFilterStatus } from 'flavours/glitch/actions/filters'; +import PropTypes from 'prop-types'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import IconButton from 'flavours/glitch/components/icon_button'; +import SelectFilter from 'flavours/glitch/features/filters/select_filter'; +import AddedToFilter from 'flavours/glitch/features/filters/added_to_filter'; + +const messages = defineMessages({ + close: { id: 'lightbox.close', defaultMessage: 'Close' }, +}); + +export default @connect(undefined) +@injectIntl +class FilterModal extends ImmutablePureComponent { + + static propTypes = { + statusId: PropTypes.string.isRequired, + contextType: PropTypes.string, + dispatch: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + state = { + step: 'select', + filterId: null, + isSubmitting: false, + isSubmitted: false, + }; + + handleNewFilterSuccess = (result) => { + this.handleSelectFilter(result.id); + }; + + handleSuccess = () => { + const { dispatch, statusId } = this.props; + dispatch(fetchStatus(statusId, true)); + this.setState({ isSubmitting: false, isSubmitted: true, step: 'submitted' }); + }; + + handleFail = () => { + this.setState({ isSubmitting: false }); + }; + + handleNextStep = step => { + this.setState({ step }); + }; + + handleSelectFilter = (filterId) => { + const { dispatch, statusId } = this.props; + + this.setState({ isSubmitting: true, filterId }); + + dispatch(createFilterStatus({ + filter_id: filterId, + status_id: statusId, + }, this.handleSuccess, this.handleFail)); + }; + + handleNewFilter = (title) => { + const { dispatch } = this.props; + + this.setState({ isSubmitting: true }); + + dispatch(createFilter({ + title, + context: ['home', 'notifications', 'public', 'thread', 'account'], + action: 'warn', + }, this.handleNewFilterSuccess, this.handleFail)); + }; + + componentDidMount () { + const { dispatch } = this.props; + + dispatch(fetchFilters()); + } + + render () { + const { + intl, + statusId, + contextType, + onClose, + } = this.props; + + const { + step, + filterId, + } = this.state; + + let stepComponent; + + switch(step) { + case 'select': + stepComponent = ( + + ); + break; + case 'create': + stepComponent = null; + break; + case 'submitted': + stepComponent = ( + + ); + } + + return ( +
+
+ + +
+ +
+ {stepComponent} +
+
+ ); + } + +} diff --git a/app/javascript/flavours/glitch/features/ui/components/modal_root.js b/app/javascript/flavours/glitch/features/ui/components/modal_root.js index 8f18d93b7..4df3a0dee 100644 --- a/app/javascript/flavours/glitch/features/ui/components/modal_root.js +++ b/app/javascript/flavours/glitch/features/ui/components/modal_root.js @@ -26,6 +26,7 @@ import { ListAdder, PinnedAccountsEditor, CompareHistoryModal, + FilterModal, } from 'flavours/glitch/util/async-components'; const MODAL_COMPONENTS = { @@ -49,6 +50,7 @@ const MODAL_COMPONENTS = { 'LIST_ADDER': ListAdder, 'PINNED_ACCOUNTS_EDITOR': PinnedAccountsEditor, 'COMPARE_HISTORY': CompareHistoryModal, + 'FILTER': FilterModal, }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/flavours/glitch/reducers/filters.js b/app/javascript/flavours/glitch/reducers/filters.js index 14b704027..cc1d3349c 100644 --- a/app/javascript/flavours/glitch/reducers/filters.js +++ b/app/javascript/flavours/glitch/reducers/filters.js @@ -1,4 +1,5 @@ import { FILTERS_IMPORT } from '../actions/importer'; +import { FILTERS_FETCH_SUCCESS, FILTERS_CREATE_SUCCESS } from '../actions/filters'; import { Map as ImmutableMap, is, fromJS } from 'immutable'; const normalizeFilter = (state, filter) => { @@ -7,13 +8,17 @@ const normalizeFilter = (state, filter) => { title: filter.title, context: filter.context, filter_action: filter.filter_action, + keywords: filter.keywords, expires_at: filter.expires_at ? Date.parse(filter.expires_at) : null, }); if (is(state.get(filter.id), normalizedFilter)) { return state; } else { - return state.set(filter.id, normalizedFilter); + // Do not overwrite keywords when receiving a partial filter + return state.update(filter.id, ImmutableMap(), (old) => ( + old.mergeWith(((old_value, new_value) => (new_value === undefined ? old_value : new_value)), normalizedFilter) + )); } }; @@ -27,6 +32,10 @@ const normalizeFilters = (state, filters) => { export default function filters(state = ImmutableMap(), action) { switch(action.type) { + case FILTERS_CREATE_SUCCESS: + return normalizeFilter(state, action.filter); + case FILTERS_FETCH_SUCCESS: + //TODO: handle deleting obsolete filters case FILTERS_IMPORT: return normalizeFilters(state, action.filters); default: diff --git a/app/javascript/flavours/glitch/selectors/index.js b/app/javascript/flavours/glitch/selectors/index.js index 7caa5259f..377805f16 100644 --- a/app/javascript/flavours/glitch/selectors/index.js +++ b/app/javascript/flavours/glitch/selectors/index.js @@ -1,6 +1,7 @@ import escapeTextContentForBrowser from 'escape-html'; import { createSelector } from 'reselect'; import { List as ImmutableList } from 'immutable'; +import { toServerSideType } from 'flavours/glitch/util/filters'; import { me } from 'flavours/glitch/util/initial_state'; const getAccountBase = (state, id) => state.getIn(['accounts', id], null); @@ -21,23 +22,6 @@ export const makeGetAccount = () => { }); }; -export const toServerSideType = columnType => { - switch (columnType) { - case 'home': - case 'notifications': - case 'public': - case 'thread': - case 'account': - return columnType; - default: - if (columnType.indexOf('list:') > -1) { - return 'home'; - } else { - return 'public'; // community, account, hashtag - } - } -}; - const getFilters = (state, { contextType }) => { if (!contextType) return null; @@ -68,6 +52,7 @@ export const makeGetStatus = () => { if (filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) { return null; } + filterResults = filterResults.filter(result => filters.has(result.get('filter'))); if (!filterResults.isEmpty()) { filtered = filterResults.map(result => filters.getIn([result.get('filter'), 'title'])); } diff --git a/app/javascript/flavours/glitch/styles/components/modal.scss b/app/javascript/flavours/glitch/styles/components/modal.scss index 90e0da02a..e95bea0d7 100644 --- a/app/javascript/flavours/glitch/styles/components/modal.scss +++ b/app/javascript/flavours/glitch/styles/components/modal.scss @@ -583,6 +583,16 @@ line-height: 22px; color: lighten($inverted-text-color, 16%); margin-bottom: 30px; + + a { + text-decoration: none; + color: $inverted-text-color; + font-weight: 500; + + &:hover { + text-decoration: underline; + } + } } &__actions { @@ -730,6 +740,14 @@ background: transparent; margin: 15px 0; } + + .emoji-mart-search { + padding-right: 10px; + } + + .emoji-mart-search-icon { + right: 10px + 5px; + } } .report-modal__container { diff --git a/app/javascript/flavours/glitch/util/async-components.js b/app/javascript/flavours/glitch/util/async-components.js index 8c9630eea..86bb7be36 100644 --- a/app/javascript/flavours/glitch/util/async-components.js +++ b/app/javascript/flavours/glitch/util/async-components.js @@ -177,3 +177,7 @@ export function FollowRecommendations () { export function CompareHistoryModal () { return import(/*webpackChunkName: "flavours/glitch/async/compare_history_modal" */'flavours/glitch/features/ui/components/compare_history_modal'); } + +export function FilterModal () { + return import(/*webpackChunkName: "flavours/glitch/async/filter_modal" */'flavours/glitch/features/ui/components/filter_modal'); +} diff --git a/app/javascript/flavours/glitch/util/filters.js b/app/javascript/flavours/glitch/util/filters.js new file mode 100644 index 000000000..97b433a99 --- /dev/null +++ b/app/javascript/flavours/glitch/util/filters.js @@ -0,0 +1,16 @@ +export const toServerSideType = columnType => { + switch (columnType) { + case 'home': + case 'notifications': + case 'public': + case 'thread': + case 'account': + return columnType; + default: + if (columnType.indexOf('list:') > -1) { + return 'home'; + } else { + return 'public'; // community, account, hashtag + } + } +}; diff --git a/app/javascript/flavours/glitch/util/icons.js b/app/javascript/flavours/glitch/util/icons.js new file mode 100644 index 000000000..be566032e --- /dev/null +++ b/app/javascript/flavours/glitch/util/icons.js @@ -0,0 +1,13 @@ +// Copied from emoji-mart for consistency with emoji picker and since +// they don't export the icons in the package +export const loupeIcon = ( + + + +); + +export const deleteIcon = ( + + + +); From 3844f15da0a9b39b456e5b482e4db235dbff574b Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 09:01:38 +0200 Subject: [PATCH 092/280] Remove obsolete filter local settings --- .../features/local_settings/page/index.js | 23 ------------------- .../glitch/reducers/local_settings.js | 1 - 2 files changed, 24 deletions(-) diff --git a/app/javascript/flavours/glitch/features/local_settings/page/index.js b/app/javascript/flavours/glitch/features/local_settings/page/index.js index ffa4e3409..333b73b45 100644 --- a/app/javascript/flavours/glitch/features/local_settings/page/index.js +++ b/app/javascript/flavours/glitch/features/local_settings/page/index.js @@ -24,10 +24,6 @@ const messages = defineMessages({ side_arm_copy: { id: 'settings.side_arm_reply_mode.copy', defaultMessage: 'Copy privacy setting of the toot being replied to' }, side_arm_restrict: { id: 'settings.side_arm_reply_mode.restrict', defaultMessage: 'Restrict privacy setting to that of the toot being replied to' }, regexp: { id: 'settings.content_warnings.regexp', defaultMessage: 'Regular expression' }, - filters_drop: { id: 'settings.filtering_behavior.drop', defaultMessage: 'Hide filtered toots completely' }, - filters_upstream: { id: 'settings.filtering_behavior.upstream', defaultMessage: 'Show "filtered" like vanilla Mastodon' }, - filters_hide: { id: 'settings.filtering_behavior.hide', defaultMessage: 'Show "filtered" and add a button to display why' }, - filters_cw: { id: 'settings.filtering_behavior.cw', defaultMessage: 'Still display the post, and add filtered words to content warning' }, rewrite_mentions_no: { id: 'settings.rewrite_mentions_no', defaultMessage: 'Do not rewrite mentions' }, rewrite_mentions_acct: { id: 'settings.rewrite_mentions_acct', defaultMessage: 'Rewrite with username and domain (when the account is remote)' }, rewrite_mentions_username: { id: 'settings.rewrite_mentions_username', defaultMessage: 'Rewrite with username' }, @@ -358,25 +354,6 @@ class LocalSettingsPage extends React.PureComponent {
), - ({ intl, onChange, settings }) => ( -
-

- - - -
- ), ({ onChange, settings }) => (

diff --git a/app/javascript/flavours/glitch/reducers/local_settings.js b/app/javascript/flavours/glitch/reducers/local_settings.js index 62ce29f0c..81ab1cb0d 100644 --- a/app/javascript/flavours/glitch/reducers/local_settings.js +++ b/app/javascript/flavours/glitch/reducers/local_settings.js @@ -21,7 +21,6 @@ const initialState = ImmutableMap({ inline_preview_cards: true, hicolor_privacy_icons: false, show_content_type_choice: false, - filtering_behavior: 'hide', tag_misleading_links: true, rewrite_mentions: 'no', content_warnings : ImmutableMap({ From 2b03e21d36715705f41669580be8b810ecad644a Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 10:49:39 +0200 Subject: [PATCH 093/280] Fix glitch-soc-specific timeline filtering logic --- .../flavours/glitch/actions/timelines.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/timelines.js b/app/javascript/flavours/glitch/actions/timelines.js index 0b36d8ac3..0d6f844b3 100644 --- a/app/javascript/flavours/glitch/actions/timelines.js +++ b/app/javascript/flavours/glitch/actions/timelines.js @@ -4,8 +4,7 @@ import api, { getLinks } from 'flavours/glitch/util/api'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; import compareId from 'flavours/glitch/util/compare_id'; import { me, usePendingItems as preferPendingItems } from 'flavours/glitch/util/initial_state'; -import { getFiltersRegex } from 'flavours/glitch/selectors'; -import { searchTextFromRawStatus } from 'flavours/glitch/actions/importer/normalizer'; +import { toServerSideType } from 'flavours/glitch/util/filters'; export const TIMELINE_UPDATE = 'TIMELINE_UPDATE'; export const TIMELINE_DELETE = 'TIMELINE_DELETE'; @@ -40,14 +39,13 @@ export function updateTimeline(timeline, status, accept) { return; } - const filters = getFiltersRegex(getState(), { contextType: timeline }); - const dropRegex = filters[0]; - const regex = filters[1]; - const text = searchTextFromRawStatus(status); - let filtered = false; + let filtered = false; - if (status.account.id !== me) { - filtered = (dropRegex && dropRegex.test(text)) || (regex && regex.test(text)); + if (status.filtered) { + const contextType = toServerSideType(timeline); + const filters = status.filtered.filter(result => result.filter.context.includes(contextType)); + + filtered = filters.length > 0; } dispatch(importFetchedStatus(status)); From 3efa8da2d6867aeaeb96d5504afbbdf126f0bd2f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 12:40:19 +0200 Subject: [PATCH 094/280] New Crowdin updates (#18972) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Uyghur) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (Dutch) * New translations en.json (Portuguese) * New translations en.json (Ukrainian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Danish) * New translations en.json (Spanish, Argentina) * New translations en.json (Korean) * New translations en.json (Catalan) * New translations en.json (Hungarian) * New translations en.json (Slovenian) * New translations en.json (Galician) * New translations en.json (Greek) * New translations en.json (Polish) * New translations en.json (Turkish) * New translations devise.en.yml (Turkish) * New translations doorkeeper.en.yml (Turkish) * New translations en.json (Albanian) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Icelandic) * New translations en.json (Latvian) * New translations en.json (Spanish) * New translations en.json (German) * New translations en.json (Italian) * New translations en.json (Ido) * New translations en.json (Russian) * New translations en.json (Vietnamese) * New translations en.yml (Esperanto) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Finnish) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Finnish) * New translations en.yml (Finnish) * New translations en.yml (Finnish) * New translations en.json (Thai) * New translations en.json (Russian) * New translations en.json (Chinese Simplified) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Thai) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Ukrainian) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Korean) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Albanian) * New translations en.yml (Korean) * New translations en.yml (Lithuanian) * New translations en.yml (Macedonian) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Punjabi) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Slovenian) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Italian) * New translations en.yml (Swedish) * New translations en.yml (Turkish) * New translations en.yml (Chinese Simplified) * New translations en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Georgian) * New translations en.yml (Armenian) * New translations en.yml (Spanish) * New translations en.yml (Japanese) * New translations en.yml (German) * New translations en.yml (Russian) * New translations en.yml (Slovak) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Romanian) * New translations en.yml (French) * New translations en.yml (Afrikaans) * New translations en.yml (Hungarian) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.yml (Catalan) * New translations en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Greek) * New translations en.yml (Frisian) * New translations en.yml (Basque) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (Persian) * New translations en.yml (Tamil) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Cornish) * New translations en.yml (Kannada) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Corsican) * New translations en.yml (Breton) * New translations en.yml (Sardinian) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations en.yml (Ido) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Sinhala) * New translations en.yml (Malayalam) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Latvian) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Marathi) * New translations en.yml (Croatian) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Hindi) * New translations en.yml (Tatar) * New translations en.yml (Malay) * New translations en.yml (Telugu) * New translations en.yml (English, United Kingdom) * New translations en.yml (Welsh) * New translations en.yml (Uyghur) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Galician) * New translations en.yml (Chinese Simplified) * New translations en.yml (Galician) * New translations simple_form.en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Polish) * New translations en.yml (Slovenian) * New translations en.yml (Chinese Simplified) * New translations simple_form.en.yml (Turkish) * New translations en.yml (Polish) * New translations en.yml (Turkish) * New translations simple_form.en.yml (Vietnamese) * New translations en.yml (Spanish) * New translations en.yml (Danish) * New translations en.yml (Korean) * New translations en.yml (Vietnamese) * New translations en.yml (Icelandic) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 17 +++ app/javascript/mastodon/locales/ar.json | 17 +++ app/javascript/mastodon/locales/ast.json | 17 +++ app/javascript/mastodon/locales/bg.json | 17 +++ app/javascript/mastodon/locales/bn.json | 17 +++ app/javascript/mastodon/locales/br.json | 17 +++ app/javascript/mastodon/locales/ca.json | 19 ++- app/javascript/mastodon/locales/ckb.json | 17 +++ app/javascript/mastodon/locales/co.json | 17 +++ app/javascript/mastodon/locales/cs.json | 17 +++ app/javascript/mastodon/locales/cy.json | 17 +++ app/javascript/mastodon/locales/da.json | 19 ++- app/javascript/mastodon/locales/de.json | 19 ++- .../mastodon/locales/defaultMessages.json | 95 ++++++++++++++ app/javascript/mastodon/locales/el.json | 19 ++- app/javascript/mastodon/locales/en-GB.json | 17 +++ app/javascript/mastodon/locales/en.json | 17 +++ app/javascript/mastodon/locales/eo.json | 17 +++ app/javascript/mastodon/locales/es-AR.json | 19 ++- app/javascript/mastodon/locales/es-MX.json | 21 +++- app/javascript/mastodon/locales/es.json | 19 ++- app/javascript/mastodon/locales/et.json | 17 +++ app/javascript/mastodon/locales/eu.json | 17 +++ app/javascript/mastodon/locales/fa.json | 17 +++ app/javascript/mastodon/locales/fi.json | 19 ++- app/javascript/mastodon/locales/fr.json | 17 +++ app/javascript/mastodon/locales/fy.json | 17 +++ app/javascript/mastodon/locales/ga.json | 17 +++ app/javascript/mastodon/locales/gd.json | 17 +++ app/javascript/mastodon/locales/gl.json | 21 +++- app/javascript/mastodon/locales/he.json | 17 +++ app/javascript/mastodon/locales/hi.json | 17 +++ app/javascript/mastodon/locales/hr.json | 17 +++ app/javascript/mastodon/locales/hu.json | 19 ++- app/javascript/mastodon/locales/hy.json | 17 +++ app/javascript/mastodon/locales/id.json | 17 +++ app/javascript/mastodon/locales/io.json | 19 ++- app/javascript/mastodon/locales/is.json | 19 ++- app/javascript/mastodon/locales/it.json | 19 ++- app/javascript/mastodon/locales/ja.json | 17 +++ app/javascript/mastodon/locales/ka.json | 17 +++ app/javascript/mastodon/locales/kab.json | 17 +++ app/javascript/mastodon/locales/kk.json | 17 +++ app/javascript/mastodon/locales/kn.json | 17 +++ app/javascript/mastodon/locales/ko.json | 19 ++- app/javascript/mastodon/locales/ku.json | 65 ++++++---- app/javascript/mastodon/locales/kw.json | 17 +++ app/javascript/mastodon/locales/lt.json | 17 +++ app/javascript/mastodon/locales/lv.json | 19 ++- app/javascript/mastodon/locales/mk.json | 17 +++ app/javascript/mastodon/locales/ml.json | 17 +++ app/javascript/mastodon/locales/mr.json | 17 +++ app/javascript/mastodon/locales/ms.json | 17 +++ app/javascript/mastodon/locales/nl.json | 19 ++- app/javascript/mastodon/locales/nn.json | 17 +++ app/javascript/mastodon/locales/no.json | 17 +++ app/javascript/mastodon/locales/oc.json | 17 +++ app/javascript/mastodon/locales/pa.json | 17 +++ app/javascript/mastodon/locales/pl.json | 19 ++- app/javascript/mastodon/locales/pt-BR.json | 17 +++ app/javascript/mastodon/locales/pt-PT.json | 19 ++- app/javascript/mastodon/locales/ro.json | 17 +++ app/javascript/mastodon/locales/ru.json | 21 +++- app/javascript/mastodon/locales/sa.json | 17 +++ app/javascript/mastodon/locales/sc.json | 17 +++ app/javascript/mastodon/locales/si.json | 17 +++ app/javascript/mastodon/locales/sk.json | 17 +++ app/javascript/mastodon/locales/sl.json | 19 ++- app/javascript/mastodon/locales/sq.json | 19 ++- app/javascript/mastodon/locales/sr-Latn.json | 17 +++ app/javascript/mastodon/locales/sr.json | 17 +++ app/javascript/mastodon/locales/sv.json | 19 ++- app/javascript/mastodon/locales/szl.json | 17 +++ app/javascript/mastodon/locales/ta.json | 17 +++ app/javascript/mastodon/locales/tai.json | 17 +++ app/javascript/mastodon/locales/te.json | 17 +++ app/javascript/mastodon/locales/th.json | 19 ++- app/javascript/mastodon/locales/tr.json | 33 +++-- app/javascript/mastodon/locales/tt.json | 17 +++ app/javascript/mastodon/locales/ug.json | 17 +++ app/javascript/mastodon/locales/uk.json | 19 ++- app/javascript/mastodon/locales/ur.json | 17 +++ app/javascript/mastodon/locales/vi.json | 19 ++- app/javascript/mastodon/locales/zgh.json | 17 +++ app/javascript/mastodon/locales/zh-CN.json | 31 +++-- app/javascript/mastodon/locales/zh-HK.json | 17 +++ app/javascript/mastodon/locales/zh-TW.json | 19 ++- config/locales/da.yml | 15 +++ config/locales/devise.tr.yml | 10 +- config/locales/doorkeeper.ku.yml | 6 +- config/locales/doorkeeper.tr.yml | 2 +- config/locales/eo.yml | 2 +- config/locales/es-AR.yml | 15 +++ config/locales/es.yml | 15 +++ config/locales/fi.yml | 119 ++++++++++++++++++ config/locales/gl.yml | 15 +++ config/locales/is.yml | 15 +++ config/locales/ko.yml | 13 ++ config/locales/ku.yml | 72 +++++++---- config/locales/pl.yml | 9 ++ config/locales/simple_form.ca.yml | 2 + config/locales/simple_form.da.yml | 2 + config/locales/simple_form.de.yml | 2 + config/locales/simple_form.el.yml | 2 + config/locales/simple_form.es-AR.yml | 2 + config/locales/simple_form.es.yml | 2 + config/locales/simple_form.fi.yml | 14 +++ config/locales/simple_form.gl.yml | 2 + config/locales/simple_form.hu.yml | 2 + config/locales/simple_form.is.yml | 2 + config/locales/simple_form.it.yml | 2 + config/locales/simple_form.ko.yml | 2 + config/locales/simple_form.ku.yml | 19 +++ config/locales/simple_form.lv.yml | 2 + config/locales/simple_form.pt-PT.yml | 2 + config/locales/simple_form.ru.yml | 2 + config/locales/simple_form.sl.yml | 2 + config/locales/simple_form.sv.yml | 2 + config/locales/simple_form.th.yml | 2 + config/locales/simple_form.tr.yml | 2 + config/locales/simple_form.uk.yml | 2 + config/locales/simple_form.vi.yml | 2 + config/locales/simple_form.zh-CN.yml | 2 + config/locales/simple_form.zh-TW.yml | 2 + config/locales/sl.yml | 19 +++ config/locales/th.yml | 3 + config/locales/tr.yml | 17 ++- config/locales/uk.yml | 12 +- config/locales/vi.yml | 9 ++ config/locales/zh-CN.yml | 13 ++ config/locales/zh-TW.yml | 13 ++ 131 files changed, 2063 insertions(+), 101 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index cb5a70dd4..86d590654 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 45a5beede..220aa14ee 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -197,6 +197,22 @@ "explore.trending_links": "الأخبار", "explore.trending_statuses": "المنشورات", "explore.trending_tags": "الوسوم", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "تم", "follow_recommendations.heading": "تابع الأشخاص الذين ترغب في رؤية منشوراتهم! إليك بعض الاقتراحات.", "follow_recommendations.lead": "ستظهر منشورات الأشخاص الذين تُتابعتهم بترتيب تسلسلي زمني على صفحتك الرئيسية. لا تخف إذا ارتكبت أي أخطاء، تستطيع إلغاء متابعة أي شخص في أي وقت تريد!", @@ -471,6 +487,7 @@ "status.edited_x_times": "عُدّل {count, plural, zero {} one {{count} مرة} two {{count} مرتين} few {{count} مرات} many {{count} مرات} other {{count} مرة}}", "status.embed": "إدماج", "status.favourite": "أضف إلى المفضلة", + "status.filter": "Filter this post", "status.filtered": "مُصفّى", "status.hide": "Hide toot", "status.history.created": "أنشأه {name} {date}", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 289e328f5..dba626299 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -197,6 +197,22 @@ "explore.trending_links": "Noticies", "explore.trending_statuses": "Posts", "explore.trending_tags": "Etiquetes", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Empotrar", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 160219e09..4ded919e0 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.", "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Вграждане", "status.favourite": "Предпочитани", + "status.filter": "Filter this post", "status.filtered": "Филтрирано", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index d4626e463..94b0477b5 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "সম্পন্ন", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "এমবেড করতে", "status.favourite": "পছন্দের করতে", + "status.filter": "Filter this post", "status.filtered": "ছাঁকনিদিত", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index c784c697a..50837691f 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -197,6 +197,22 @@ "explore.trending_links": "Keleier", "explore.trending_statuses": "Posts", "explore.trending_tags": "Gerioù-klik", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Graet", "follow_recommendations.heading": "Heuliit tud e plijfe deoc'h lenn toudoù! Setu un tamm alioù.", "follow_recommendations.lead": "Toudoù eus tud heuliet ganeoc'h a zeuio war wel en un urzh amzeroniezhel war ho red degemer. N'ho peus ket aon ober fazioù, gallout a rit paouez heuliañ tud ken aes n'eus forzh pegoulz!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Enframmañ", "status.favourite": "Muiañ-karet", + "status.filter": "Filter this post", "status.filtered": "Silet", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 5549b3952..f67a0f3fc 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Vaja!", "announcement.announcement": "Anunci", "attachments_list.unprocessed": "(sense processar)", - "audio.hide": "Hide audio", + "audio.hide": "Amaga l'àudio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", @@ -197,6 +197,22 @@ "explore.trending_links": "Notícies", "explore.trending_statuses": "Publicacions", "explore.trending_tags": "Etiquetes", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fet", "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.", "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", "status.embed": "Incrusta", "status.favourite": "Favorit", + "status.filter": "Filter this post", "status.filtered": "Filtrat", "status.hide": "Amaga publicació", "status.history.created": "{name} ha creat {date}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 1addda370..19d9550d0 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -197,6 +197,22 @@ "explore.trending_links": "هەواڵەکان", "explore.trending_statuses": "نووسراوەکان", "explore.trending_tags": "هاشتاگ", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "تەواو", "follow_recommendations.heading": "شوێن ئەو کەسانە بکەون کە دەتەوێت پۆستەکان ببینیت لە! لێرەدا چەند پێشنیارێک هەیە.", "follow_recommendations.lead": "بابەتەکانی ئەو کەسانەی کە بەدوایدا دەگەڕێیت بە فەرمانی کرۆنۆلۆجی لە خواردنەکانی ماڵەکەت دەردەکەون. مەترسە لە هەڵەکردن، دەتوانیت بە ئاسانی خەڵک هەڵبکەیت هەر کاتێک!", @@ -471,6 +487,7 @@ "status.edited_x_times": "دەستکاریکراوە {count, plural, one {{count} کات} other {{count} کات}}", "status.embed": "نیشتەجێ بکە", "status.favourite": "دڵخواز", + "status.filter": "Filter this post", "status.filtered": "پاڵاوتن", "status.hide": "Hide toot", "status.history.created": "{name} دروستکراوە لە{date}", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 63d214046..5ca3f4a4b 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fatta", "follow_recommendations.heading": "Siguitate a ghjente da quelli vulete vede i missaghji! Eccu qualchì ricumandazione.", "follow_recommendations.lead": "I missaghji da a ghjente che voi siguitate figureranu in ordine crunulogicu nant'a vostra pagina d'accolta. Ùn timite micca di fà un sbagliu, pudete sempre disabbunavvi d'un contu à ogni mumentu!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Integrà", "status.favourite": "Aghjunghje à i favuriti", + "status.filter": "Filter this post", "status.filtered": "Filtratu", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 7ac077ae5..ef1a13d8f 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -197,6 +197,22 @@ "explore.trending_links": "Zprávy", "explore.trending_statuses": "Příspěvky", "explore.trending_tags": "Hashtagy", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Sledujte lidi, jejichž příspěvky chcete vidět! Tady jsou nějaké návrhy.", "follow_recommendations.lead": "Příspěvky od lidí, které sledujete, se budou objevovat v chronologickém pořadí ve vaší domovské ose. Nebojte se, že uděláte chybu, můžete lidi stejně snadno kdykoliv přestat sledovat!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Upraven {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}", "status.embed": "Vložit na web", "status.favourite": "Oblíbit", + "status.filter": "Filter this post", "status.filtered": "Filtrováno", "status.hide": "Skrýt příspěvek", "status.history.created": "Uživatel {name} vytvořil {date}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index f6440db72..cb1c90d69 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -197,6 +197,22 @@ "explore.trending_links": "Newyddion", "explore.trending_statuses": "Postiadau", "explore.trending_tags": "Hashnodau", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Wedi gorffen", "follow_recommendations.heading": "Dilynwch y bobl yr hoffech chi weld eu postiadau! Dyma ambell i awgrymiad.", "follow_recommendations.lead": "Bydd postiadau gan bobl rydych chi'n eu dilyn yn ymddangos mewn trefn amser ar eich ffrwd cartref. Peidiwch â bod ofn gwneud camgymeriadau, gallwch chi ddad-ddilyn pobl yr un mor hawdd unrhyw bryd!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Golygwyd {count, plural, one {unwaith} two {dwywaith} other {{count} gwaith}}", "status.embed": "Plannu", "status.favourite": "Hoffi", + "status.filter": "Filter this post", "status.filtered": "Wedi'i hidlo", "status.hide": "Hide toot", "status.history.created": "{name} greuodd {date}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index ef7f85a3b..8f015b50d 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Bekendtgørelse", "attachments_list.unprocessed": "(ubehandlet)", - "audio.hide": "Hide audio", + "audio.hide": "Skjul lyd", "autosuggest_hashtag.per_week": "{count} pr. uge", "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.", @@ -197,6 +197,22 @@ "explore.trending_links": "Nyheder", "explore.trending_statuses": "Indlæg", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Udført", "follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.", "follow_recommendations.lead": "Indlæg, fra personer du følger, vil fremgå kronologisk ordnet i dit hjemmefeed. Vær ikke bange for at begå fejl, da du altid og meget nemt kan ændre dit valg!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Redigeret {count, plural, one {{count} gang} other {{count} gange}}", "status.embed": "Indlejr", "status.favourite": "Favorit", + "status.filter": "Filter this post", "status.filtered": "Filtreret", "status.hide": "Skjul indlæg", "status.history.created": "{name} oprettet {date}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 8a9d0f06d..2df1dc0ea 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hoppla!", "announcement.announcement": "Ankündigung", "attachments_list.unprocessed": "(ausstehend)", - "audio.hide": "Hide audio", + "audio.hide": "Audio stummschalten", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", @@ -197,6 +197,22 @@ "explore.trending_links": "Nachrichten", "explore.trending_statuses": "Beiträge", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fertig", "follow_recommendations.heading": "Folge Leuten, von denen du Beiträge sehen möchtest! Hier sind einige Vorschläge.", "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} mal} other {{count} mal}} bearbeitet", "status.embed": "Einbetten", "status.favourite": "Favorisieren", + "status.filter": "Filter this post", "status.filtered": "Gefiltert", "status.hide": "Tröt verbergen", "status.history.created": "{name} erstellte {date}", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 760602f6e..13ef56922 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -635,6 +635,10 @@ { "defaultMessage": "Unblock @{name}", "id": "account.unblock" + }, + { + "defaultMessage": "Filter this post", + "id": "status.filter" } ], "path": "app/javascript/mastodon/components/status_action_bar.json" @@ -1880,6 +1884,84 @@ ], "path": "app/javascript/mastodon/features/favourites/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Expired filter!", + "id": "filter_modal.added.expired_title" + }, + { + "defaultMessage": "This filter category has expired, you will need to change the expiration date for it to apply.", + "id": "filter_modal.added.expired_explanation" + }, + { + "defaultMessage": "Context mismatch!", + "id": "filter_modal.added.context_mismatch_title" + }, + { + "defaultMessage": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "id": "filter_modal.added.context_mismatch_explanation" + }, + { + "defaultMessage": "settings page", + "id": "filter_modal.added.settings_link" + }, + { + "defaultMessage": "Filter added!", + "id": "filter_modal.added.title" + }, + { + "defaultMessage": "This post has been added to the following filter category: {title}.", + "id": "filter_modal.added.short_explanation" + }, + { + "defaultMessage": "Filter settings", + "id": "filter_modal.added.review_and_configure_title" + }, + { + "defaultMessage": "To review and further configure this filter category, go to the {settings_link}.", + "id": "filter_modal.added.review_and_configure" + }, + { + "defaultMessage": "Done", + "id": "report.close" + } + ], + "path": "app/javascript/mastodon/features/filters/added_to_filter.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Search or create", + "id": "filter_modal.select_filter.search" + }, + { + "defaultMessage": "Clear", + "id": "emoji_button.clear" + }, + { + "defaultMessage": "expired", + "id": "filter_modal.select_filter.expired" + }, + { + "defaultMessage": "does not apply to this context", + "id": "filter_modal.select_filter.context_mismatch" + }, + { + "defaultMessage": "New category: {name}", + "id": "filter_modal.select_filter.prompt_new" + }, + { + "defaultMessage": "Filter this post", + "id": "filter_modal.select_filter.title" + }, + { + "defaultMessage": "Use an existing category or create a new one", + "id": "filter_modal.select_filter.subtitle" + } + ], + "path": "app/javascript/mastodon/features/filters/select_filter.json" + }, { "descriptors": [ { @@ -3408,6 +3490,19 @@ ], "path": "app/javascript/mastodon/features/ui/components/embed_modal.json" }, + { + "descriptors": [ + { + "defaultMessage": "Close", + "id": "lightbox.close" + }, + { + "defaultMessage": "Filter a post", + "id": "filter_modal.title.status" + } + ], + "path": "app/javascript/mastodon/features/ui/components/filter_modal.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index de96147cf..999f67c73 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Εεπ!", "announcement.announcement": "Ανακοίνωση", "attachments_list.unprocessed": "(μη επεξεργασμένο)", - "audio.hide": "Hide audio", + "audio.hide": "Απόκρυψη αρχείου ήχου", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", "bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", @@ -197,6 +197,22 @@ "explore.trending_links": "Νέα", "explore.trending_statuses": "Αναρτήσεις", "explore.trending_tags": "Ετικέτες", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Ολοκληρώθηκε", "follow_recommendations.heading": "Ακολουθήστε άτομα από τα οποία θα θέλατε να βλέπετε δημοσιεύσεις! Ορίστε μερικές προτάσεις.", "follow_recommendations.lead": "Οι αναρτήσεις των ατόμων που ακολουθείτε θα εμφανίζονται με χρονολογική σειρά στη ροή σας. Μη φοβάστε να κάνετε λάθη, καθώς μπορείτε πολύ εύκολα να σταματήσετε να ακολουθείτε άλλα άτομα οποιαδήποτε στιγμή!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Ενσωμάτωσε", "status.favourite": "Σημείωσε ως αγαπημένο", + "status.filter": "Filter this post", "status.filtered": "Φιλτραρισμένα", "status.hide": "Απόκρυψη toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 988793357..2287dcda5 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 22ecee8df..521bc4455 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index a86842d08..082c53de7 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -197,6 +197,22 @@ "explore.trending_links": "Novaĵoj", "explore.trending_statuses": "Afiŝoj", "explore.trending_tags": "Kradvortoj", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Farita", "follow_recommendations.heading": "Sekvi la personojn kies mesaĝojn vi volas vidi! Jen iom da sugestoj.", "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, aperos laŭ kronologia ordo en via hejma templinio. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", "status.embed": "Enkorpigi", "status.favourite": "Aldoni al viaj preferaĵoj", + "status.filter": "Filter this post", "status.filtered": "Filtrita", "status.hide": "Kaŝi la mesaĝon", "status.history.created": "{name} kreis {date}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 9f2bbc2e4..8e4b906a2 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "¡Epa!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "[sin procesar]", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -197,6 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Mensajes", "explore.trending_tags": "Etiquetas", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Listo", "follow_recommendations.heading": "¡Seguí cuentas cuyos mensajes te gustaría ver! Acá tenés algunas sugerencias.", "follow_recommendations.lead": "Los mensajes de las cuentas que seguís aparecerán en orden cronológico en la columna \"Inicio\". No tengás miedo de meter la pata, ¡podés dejar de seguir cuentas fácilmente en cualquier momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Insertar", "status.favourite": "Marcar como favorito", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Ocultar mensaje", "status.history.created": "Creado por {name} el {date}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index d8854041b..96f0a59dc 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -197,6 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Publicaciones", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -221,9 +237,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir etiqueta", "hashtag.total_volume": "Volumen total en los últimos {days, plural, one {día} other {{days} días}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Dejar de seguir etiqueta", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} time} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 928b870e4..5de01d5fc 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -197,6 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Publicaciones", "explore.trending_tags": "Etiquetas", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 0bac1f3d3..6737111fd 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -197,6 +197,22 @@ "explore.trending_links": "Uudised", "explore.trending_statuses": "Postitused", "explore.trending_tags": "Sildid", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Sängita", "status.favourite": "Lemmik", + "status.filter": "Filter this post", "status.filtered": "Filtreeritud", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 76c520a59..c8062f004 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -197,6 +197,22 @@ "explore.trending_links": "Berriak", "explore.trending_statuses": "Bidalketak", "explore.trending_tags": "Traolak", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Egina", "follow_recommendations.heading": "Jarraitu jendea beren bidalketak ikusteko! Hemen dituzu iradokizun batzuk.", "follow_recommendations.lead": "Jarraitzen duzun jendearen bidalketak ordena kronologikoan agertuko dira zure hasierako jarioan. Ez izan akatsak egiteko beldurrik, jendea jarraitzeari uztea erraza da!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua", "status.embed": "Txertatu", "status.favourite": "Gogokoa", + "status.filter": "Filter this post", "status.filtered": "Iragazita", "status.hide": "Hide toot", "status.history.created": "{name} erabiltzaileak sortua {date}", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index c3876e2e3..775f38475 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -197,6 +197,22 @@ "explore.trending_links": "اخبار", "explore.trending_statuses": "فرسته‌ها", "explore.trending_tags": "هشتگ‌ها", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "انجام شد", "follow_recommendations.heading": "افرادی را که می‌خواهید فرسته‌هایشان را ببینید پی‌گیری کنید! این‌ها تعدادی پیشنهاد هستند.", "follow_recommendations.lead": "فرسته‌های افرادی که دنبال می‌کنید به ترتیب زمانی در خوراک خانه‌تان نشان داده خواهد شد. از اشتباه کردن نترسید. می‌توانید به همین سادگی در هر زمانی از دنبال کردن افراد دست بکشید!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد", "status.embed": "جاسازی", "status.favourite": "پسندیدن", + "status.filter": "Filter this post", "status.filtered": "پالوده", "status.hide": "Hide toot", "status.history.created": "توسط {name} در {date} ایجاد شد", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 46316731a..0dece0c51 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hups!", "announcement.announcement": "Ilmoitus", "attachments_list.unprocessed": "(käsittelemätön)", - "audio.hide": "Hide audio", + "audio.hide": "Piilota ääni", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", "bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.", @@ -197,6 +197,22 @@ "explore.trending_links": "Uutiset", "explore.trending_statuses": "Viestit", "explore.trending_tags": "Aihetunnisteet", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Valmis", "follow_recommendations.heading": "Seuraa ihmisiä, joilta haluaisit nähdä julkaisuja! Tässä on muutamia ehdotuksia.", "follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Muokattu {count, plural, one {{count} aika} other {{count} kertaa}}", "status.embed": "Upota", "status.favourite": "Tykkää", + "status.filter": "Filter this post", "status.filtered": "Suodatettu", "status.hide": "Piilota toot", "status.history.created": "{name} luotu {date}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index b6b8e5d6f..dcac5c880 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -197,6 +197,22 @@ "explore.trending_links": "Actualité", "explore.trending_statuses": "Messages", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Terminé", "follow_recommendations.heading": "Suivez les personnes dont vous aimeriez voir les messages ! Voici quelques suggestions.", "follow_recommendations.lead": "Les messages des personnes que vous suivez apparaîtront par ordre chronologique sur votre fil d'accueil. Ne craignez pas de faire des erreurs, vous pouvez arrêter de suivre les gens aussi facilement à tout moment !", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edité {count, plural, one {{count} fois} other {{count} fois}}", "status.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", + "status.filter": "Filter this post", "status.filtered": "Filtré", "status.hide": "Cacher le pouet", "status.history.created": "créé par {name} {date}", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 2ff93a6e3..a53a1cf52 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -197,6 +197,22 @@ "explore.trending_links": "Nijs", "explore.trending_statuses": "Berjochten", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Klear", "follow_recommendations.heading": "Folgje minsken wer as jo graach berjochten fan sjen wolle! Hjir binne wat suggestjes.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} kear} other {{count} kearen}} bewurke", "status.embed": "Ynslute", "status.favourite": "Favorite", + "status.filter": "Filter this post", "status.filtered": "Filtere", "status.hide": "Hide toot", "status.history.created": "{name} makke dit {date}", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 6a7aff2af..e05c4a41d 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -197,6 +197,22 @@ "explore.trending_links": "Nuacht", "explore.trending_statuses": "Postálacha", "explore.trending_tags": "Haischlibeanna", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Déanta", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}", "status.embed": "Embed", "status.favourite": "Rogha", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index cfaa429a7..c58729271 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -197,6 +197,22 @@ "explore.trending_links": "Naidheachdan", "explore.trending_statuses": "Postaichean", "explore.trending_tags": "Tagaichean hais", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Deiseil", "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air inbhir na dachaighe agad. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Chaidh a dheasachadh {count, plural, one {{counter} turas} two {{counter} thuras} few {{counter} tursan} other {{counter} turas}}", "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", + "status.filter": "Filter this post", "status.filtered": "Criathraichte", "status.hide": "Falaich am post", "status.history.created": "Chruthaich {name} {date} e", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index adef612c6..0c7baa332 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Vaites!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sen procesar)", - "audio.hide": "Hide audio", + "audio.hide": "Agochar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", "bundle_column_error.body": "Ocorreu un erro ó cargar este compoñente.", @@ -197,6 +197,22 @@ "explore.trending_links": "Novas", "explore.trending_statuses": "Publicacións", "explore.trending_tags": "Cancelos", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Feito", "follow_recommendations.heading": "Segue a persoas das que queiras ler publicacións! Aqui tes unhas suxestións.", "follow_recommendations.lead": "As publicacións das persoas que segues aparecerán na túa cronoloxía de inicio ordenadas temporalmente. Non teñas medo a equivocarte, podes deixar de seguirlas igual de fácil en calquera momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustar", "status.favourite": "Favorito", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Agochar publicación", "status.history.created": "{name} creouno o {date}", @@ -521,7 +538,7 @@ "timeline_hint.resources.followers": "Seguidoras", "timeline_hint.resources.follows": "Seguindo", "timeline_hint.resources.statuses": "Publicacións antigas", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} nos últimos {days, plural, one {día} other {{days} días}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} {days, plural, one {no último día} other {nos {days} últimos días}}", "trends.trending_now": "Tendencias actuais", "ui.beforeunload": "O borrador perderase se saes de Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index c0c0b57f1..281b91bc1 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -197,6 +197,22 @@ "explore.trending_links": "חדשות", "explore.trending_statuses": "פוסטים", "explore.trending_tags": "האשטאגים", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "בוצע", "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.", "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!", @@ -471,6 +487,7 @@ "status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}", "status.embed": "הטמעה", "status.favourite": "חיבוב", + "status.filter": "Filter this post", "status.filtered": "סונן", "status.hide": "הסתר פוסט", "status.history.created": "{name} יצר/ה {date}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 9f35187f2..d2403c1f5 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 9f2df3c71..c66de9c0d 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Učinjeno", "follow_recommendations.heading": "Zaprati osobe čije objave želiš vidjeti! Evo nekoliko prijedloga.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Označi favoritom", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 5b2b98172..ce25cd103 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hoppá!", "announcement.announcement": "Közlemény", "attachments_list.unprocessed": "(feldolgozatlan)", - "audio.hide": "Hide audio", + "audio.hide": "Hang elrejtése", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", "bundle_column_error.body": "Valami hiba történt a komponens betöltése közben.", @@ -197,6 +197,22 @@ "explore.trending_links": "Hírek", "explore.trending_statuses": "Bejegyzések", "explore.trending_tags": "Hashtagek", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Kész", "follow_recommendations.heading": "Kövesd azokat, akiknek a bejegyzéseit látni szeretnéd! Itt van néhány javaslat.", "follow_recommendations.lead": "Az általad követettek bejegyzései a saját idővonaladon fognak megjelenni időrendi sorrendben. Ne félj attól, hogy hibázol! A követést bármikor, ugyanilyen könnyen visszavonhatod!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} alkalommal} other {{count} alkalommal}} szerkesztve", "status.embed": "Beágyazás", "status.favourite": "Kedvenc", + "status.filter": "Filter this post", "status.filtered": "Megszűrt", "status.hide": "Bejegyzés elrejtése", "status.history.created": "{name} létrehozta: {date}", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index f552e345c..5a18eff04 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -197,6 +197,22 @@ "explore.trending_links": "Նորութիւններ", "explore.trending_statuses": "Գրառումներ", "explore.trending_tags": "Պիտակներ", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Աւարտուած է", "follow_recommendations.heading": "Հետեւիր այն մարդկանց, որոնց գրառումները կը ցանկանաս տեսնել։ Ահա մի քանի առաջարկ։", "follow_recommendations.lead": "Քո հոսքում, ժամանակագրական դասաւորութեամբ կը տեսնես այն մարդկանց գրառումները, որոնց հետեւում ես։ Մի վախեցիր սխալուել, դու միշտ կարող ես հեշտութեամբ ապահետեւել մարդկանց։", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Ներդնել", "status.favourite": "Հաւանել", + "status.filter": "Filter this post", "status.filtered": "Զտուած", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 2a081cfbb..9c3879212 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -197,6 +197,22 @@ "explore.trending_links": "Berita", "explore.trending_statuses": "Postingan", "explore.trending_tags": "Tagar", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Selesai", "follow_recommendations.heading": "Ikuti orang yang ingin Anda lihat kirimannya! Ini ada beberapa saran.", "follow_recommendations.lead": "Kiriman dari orang yang Anda ikuti akan tampil berdasar waktu di beranda Anda. Jangan takut membuat kesalahan, Anda dapat berhenti mengikuti mereka dengan mudah kapan saja!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Diedit {count, plural, other {{count} kali}}", "status.embed": "Tanam", "status.favourite": "Difavoritkan", + "status.filter": "Filter this post", "status.filtered": "Disaring", "status.hide": "Hide toot", "status.history.created": "{name} membuat pada {date}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 1d0a909a2..f3bdb040c 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Problemo!", "announcement.announcement": "Anunco", "attachments_list.unprocessed": "(neprocedita)", - "audio.hide": "Hide audio", + "audio.hide": "Celez audio", "autosuggest_hashtag.per_week": "{count} dum singla semano", "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo", "bundle_column_error.body": "Nulo ne functionis dum chargar ca kompozaj.", @@ -197,6 +197,22 @@ "explore.trending_links": "Niuzi", "explore.trending_statuses": "Posti", "explore.trending_tags": "Hashtagi", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fina", "follow_recommendations.heading": "Sequez personi quo igas posti quon vu volas vidar! Hike esas ula sugestati.", "follow_recommendations.lead": "Posti de personi quon vu sequas kronologiale montresos en vua hemniuzeto. Ne timas igar erori, vu povas desequar personi tam same facila irgatempe!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}", "status.embed": "Eninsertez", "status.favourite": "Favorizar", + "status.filter": "Filter this post", "status.filtered": "Filtrita", "status.hide": "Celez posto", "status.history.created": "{name} kreis ye {date}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index d74d45a76..7e3a40fa7 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Úbbs!", "announcement.announcement": "Auglýsing", "attachments_list.unprocessed": "(óunnið)", - "audio.hide": "Hide audio", + "audio.hide": "Fela hljóð", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", @@ -197,6 +197,22 @@ "explore.trending_links": "Fréttir", "explore.trending_statuses": "Færslur", "explore.trending_tags": "Myllumerki", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Lokið", "follow_recommendations.heading": "Fylgstu með fólki sem þú vilt sjá færslur frá! Hér eru nokkrar tillögur.", "follow_recommendations.lead": "Færslur frá fólki sem þú fylgist með eru birtar í tímaröð á heimastreyminu þínu. Þú þarft ekki að hræðast mistök, það er jafn auðvelt að hætta að fylgjast með fólki hvenær sem er!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Breytt {count, plural, one {{count} sinni} other {{count} sinnum}}", "status.embed": "Ívefja", "status.favourite": "Eftirlæti", + "status.filter": "Filter this post", "status.filtered": "Síað", "status.hide": "Fela færslu", "status.history.created": "{name} útbjó {date}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 7a99d031e..9f32a0685 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Annuncio", "attachments_list.unprocessed": "(non elaborato)", - "audio.hide": "Hide audio", + "audio.hide": "Nascondi audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", "bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.", @@ -197,6 +197,22 @@ "explore.trending_links": "Novità", "explore.trending_statuses": "Post", "explore.trending_tags": "Hashtag", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fatto", "follow_recommendations.heading": "Segui le persone da cui vuoi vedere i messaggi! Ecco alcuni suggerimenti.", "follow_recommendations.lead": "I messaggi da persone che segui verranno visualizzati in ordine cronologico nel tuo home feed. Non abbiate paura di commettere errori, potete smettere di seguire le persone altrettanto facilmente in qualsiasi momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Modificato {count, plural, one {{count} volta} other {{count} volte}}", "status.embed": "Incorpora", "status.favourite": "Apprezzato", + "status.filter": "Filter this post", "status.filtered": "Filtrato", "status.hide": "Nascondi toot", "status.history.created": "{name} ha creato {date}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 070248d10..55cb2eb93 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -197,6 +197,22 @@ "explore.trending_links": "ニュース", "explore.trending_statuses": "投稿", "explore.trending_tags": "ハッシュタグ", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "完了", "follow_recommendations.heading": "投稿を見たい人をフォローしてください!ここにおすすめがあります。", "follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count}回編集", "status.embed": "埋め込み", "status.favourite": "お気に入り", + "status.filter": "Filter this post", "status.filtered": "フィルターされました", "status.hide": "トゥートを非表示", "status.history.created": "{name}さんが{date}に作成", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index bafaca65e..c6c72b6ce 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "ჩართვა", "status.favourite": "ფავორიტი", + "status.filter": "Filter this post", "status.filtered": "ფილტრირებული", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index ff93fc968..035ec7c84 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Tisuffaɣ", "explore.trending_tags": "Ihacṭagen", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Immed", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Seddu", "status.favourite": "Rnu ɣer yismenyifen", + "status.filter": "Filter this post", "status.filtered": "Yettwasizdeg", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index f15dc88a0..edcf0650c 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embеd", "status.favourite": "Таңдаулы", + "status.filter": "Filter this post", "status.filtered": "Фильтрленген", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 1e81ab32a..3d2e0a68d 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index d8eca4ee0..e5dfc7689 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "앗!", "announcement.announcement": "공지사항", "attachments_list.unprocessed": "(처리 안 됨)", - "audio.hide": "Hide audio", + "audio.hide": "소리 숨기기", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", "bundle_column_error.body": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", @@ -197,6 +197,22 @@ "explore.trending_links": "소식", "explore.trending_statuses": "게시물", "explore.trending_tags": "해시태그", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "완료", "follow_recommendations.heading": "게시물을 받아 볼 사람들을 팔로우 하세요! 여기 몇몇의 추천이 있습니다.", "follow_recommendations.lead": "당신이 팔로우 하는 사람들의 게시물이 시간순으로 정렬되어 당신의 홈 피드에 표시될 것입니다. 실수를 두려워 하지 마세요, 언제든지 쉽게 팔로우 취소를 할 수 있습니다!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count}번 수정됨", "status.embed": "공유하기", "status.favourite": "좋아요", + "status.filter": "Filter this post", "status.filtered": "필터로 걸러짐", "status.hide": "툿 숨기기", "status.history.created": "{name} 님이 {date}에 생성함", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 740bcd917..27033efbf 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -17,28 +17,28 @@ "account.follow": "Bişopîne", "account.followers": "Şopîner", "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.followers_counter": "{count, plural, one {{counter} Şopîner} other {{counter} Şopîner}}", "account.following": "Dişopîne", "account.following_counter": "{count, plural, one {{counter} Dişopîne} other {{counter} Dişopîne}}", "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", - "account.joined": "Tevlîbû di {date} de", + "account.joined": "Di {date} de tevlî bû", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.", "account.media": "Medya", "account.mention": "Qal @{name} bike", "account.moved_to": "{name} hate livandin bo:", - "account.mute": "@{name} Bêdeng bike", + "account.mute": "@{name} bêdeng bike", "account.mute_notifications": "Agahdariyan ji @{name} bêdeng bike", "account.muted": "Bêdengkirî", "account.posts": "Şandî", "account.posts_with_replies": "Şandî û bersiv", - "account.report": "@{name} Ragihîne", + "account.report": "@{name} ragihîne", "account.requested": "Li benda erêkirinê ye. Ji bo betal kirina daxwazê pêl bikin", "account.share": "Profîla @{name} parve bike", "account.show_reblogs": "Bilindkirinên ji @{name} nîşan bike", - "account.statuses_counter": "{count, plural,one {{counter} şandî}other {{counter} şandî}}", + "account.statuses_counter": "{count, plural,one {{counter} Şandî}other {{counter} Şandî}}", "account.unblock": "Astengê li ser @{name} rake", "account.unblock_domain": "Astengê li ser navperê {domain} rake", "account.unblock_short": "Astengiyê rake", @@ -59,7 +59,7 @@ "alert.unexpected.title": "Wey li min!", "announcement.announcement": "Daxuyanî", "attachments_list.unprocessed": "(bêpêvajo)", - "audio.hide": "Hide audio", + "audio.hide": "Dengê veşêre", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", @@ -76,12 +76,12 @@ "column.domain_blocks": "Navperên astengkirî", "column.favourites": "Bijarte", "column.follow_requests": "Daxwazên şopandinê", - "column.home": "Serrûpel", + "column.home": "Rûpela sereke", "column.lists": "Rêzok", "column.mutes": "Bikarhênerên bêdengkirî", "column.notifications": "Agahdarî", "column.pins": "Şandiya derzîkirî", - "column.public": "Demnameyê federalîkirî", + "column.public": "Demnameya giştî", "column_back_button.label": "Vegere", "column_header.hide_settings": "Sazkariyan veşêre", "column_header.moveLeft_settings": "Stûnê bilivîne bo çepê", @@ -168,12 +168,12 @@ "empty_column.account_timeline": "Li vir şandî tune!", "empty_column.account_unavailable": "Profîl nayê peydakirin", "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.", - "empty_column.bookmarked_statuses": "Hîn tu peyamên şûnpelkirî tuneye. Gava ku hûn yek şûnpel bikin, ew ê li vir xûya bike.", + "empty_column.bookmarked_statuses": "Hîn tu peyamên te yên şûnpelkirî tune ne. Dema ku tu yekî şûnpel bikî, ew ê li vir xuya bibe.", "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!", - "empty_column.direct": "Hêj peyameke te yê rasterast tuneye. Gava ku tu yekî bişeynî an jî bigirî, ew ê li vir xûya bike.", + "empty_column.direct": "Hîn peyamên te yên rasterast tune ne. Dema ku tu yekî bişînî an jî wergirî, ew ê li vir xuya bibe.", "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.", "empty_column.explore_statuses": "Tiştek niha di rojevê de tune. Paşê vegere!", - "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.", + "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijarte tune ne. Dema ku te yekî bijart, ew ê li vir xuya bibe.", "empty_column.favourites": "Hîn tu kes vê peyamê nebijartiye. Gava ku hin kes bijartin, ew ê li vir xûya bikin.", "empty_column.follow_recommendations": "Wusa dixuye ku ji bo we tu pêşniyar nehatine çêkirin. Hûn dikarin lêgerînê bikarbînin da ku li kesên ku hûn nas dikin bigerin an hashtagên trendî bigerin.", "empty_column.follow_requests": "Hê jî daxwaza şopandinê tunne ye. Dema daxwazek hat, yê li vir were nîşan kirin.", @@ -181,7 +181,7 @@ "empty_column.home": "Demnameya mala we vala ye! Ji bona tijîkirinê bêtir mirovan bişopînin. {suggestions}", "empty_column.home.suggestions": "Hinek pêşniyaran bibîne", "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.", - "empty_column.lists": "Hêj qet rêzokê te tunne ye. Dema yek peyda bû, yê li vir were nîşan kirin.", + "empty_column.lists": "Hîn tu rêzokên te tune ne. Dema yekî çê bikî, ew ê li vir xuya bibe.", "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.", "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.", "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin", @@ -197,6 +197,22 @@ "explore.trending_links": "Nûçe", "explore.trending_statuses": "Şandî", "explore.trending_tags": "Hashtag", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Qediya", "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.", "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!", @@ -243,10 +259,10 @@ "keyboard_shortcuts.enter": "Şandiyê veke", "keyboard_shortcuts.favourite": "Şandiya bijarte", "keyboard_shortcuts.favourites": "Rêzokên bijarte veke", - "keyboard_shortcuts.federated": "Demnameyê federalîkirî veke", + "keyboard_shortcuts.federated": "Demnameya giştî veke", "keyboard_shortcuts.heading": "Kurterêyên klavyeyê", "keyboard_shortcuts.home": "Demnameyê veke", - "keyboard_shortcuts.hotkey": "Bişkoka kurterê", + "keyboard_shortcuts.hotkey": "Kurte bişkok", "keyboard_shortcuts.legend": "Vê çîrokê nîşan bike", "keyboard_shortcuts.local": "Demnameya herêmî veke", "keyboard_shortcuts.mention": "Qala nivîskarî/ê bike", @@ -272,7 +288,7 @@ "lightbox.next": "Pêş", "lightbox.previous": "Paş", "limited_account_hint.action": "Bi heman awayî profîlê nîşan bide", - "limited_account_hint.title": "Ev profîl ji aliyê çavêriya li ser rajekarê te hatiye veşartin.", + "limited_account_hint.title": "Ev profîl ji aliyê çavdêriya li ser rajekarê te hatiye veşartin.", "lists.account.add": "Tevlî rêzokê bike", "lists.account.remove": "Ji rêzokê rake", "lists.delete": "Rêzokê jê bibe", @@ -294,7 +310,7 @@ "mute_modal.duration": "Dem", "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", "mute_modal.indefinite": "Nediyar", - "navigation_bar.apps": "Sepana mobîl", + "navigation_bar.apps": "Sepana mobayil", "navigation_bar.blocks": "Bikarhênerên astengkirî", "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", @@ -309,14 +325,14 @@ "navigation_bar.follow_requests": "Daxwazên şopandinê", "navigation_bar.follows_and_followers": "Şopandin û şopîner", "navigation_bar.info": "Derbarê vî rajekarî", - "navigation_bar.keyboard_shortcuts": "Bişkoka kurterê", + "navigation_bar.keyboard_shortcuts": "Kurte bişkok", "navigation_bar.lists": "Rêzok", "navigation_bar.logout": "Derkeve", "navigation_bar.mutes": "Bikarhênerên bêdengkirî", "navigation_bar.personal": "Kesanî", "navigation_bar.pins": "Şandiya derzîkirî", "navigation_bar.preferences": "Sazkarî", - "navigation_bar.public_timeline": "Demnameyê federalîkirî", + "navigation_bar.public_timeline": "Demnameya giştî", "navigation_bar.security": "Ewlehî", "notification.admin.report": "{name} hate ragihandin {target}", "notification.admin.sign_up": "{name} tomar bû", @@ -387,7 +403,7 @@ "privacy.unlisted.short": "Nerêzok", "refresh": "Nû bike", "regeneration_indicator.label": "Tê barkirin…", - "regeneration_indicator.sublabel": "Mala te da tê amedekirin!", + "regeneration_indicator.sublabel": "Naveroka rûpela sereke ya te tê amedekirin!", "relative_time.days": "{number}r", "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê", "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê", @@ -412,7 +428,7 @@ "report.close": "Qediya", "report.comment.title": "Tiştek din heye ku tu difikirî ku divê em zanibin?", "report.forward": "Biçe bo {target}", - "report.forward_hint": "Ajimêr ji rajekarek din da ne. Tu kopîyeka anonîm ya raporê bişînî li wur?", + "report.forward_hint": "Ajimêr ji rajekareke din e. Tu kopîyeka anonîm ya raporê bişînî wir jî?", "report.mute": "Bêdeng bike", "report.mute_explanation": "Tê yê şandiyên wan nebînî. Ew hin jî dikarin te bişopînin û şandiyên te bibînin û wê nizanibin ku ew hatine bêdengkirin.", "report.next": "Pêş", @@ -437,7 +453,7 @@ "report.thanks.title_actionable": "Spas ji bo ragihandina te, em ê binirxînin.", "report.unfollow": "@{name} neşopîne", "report.unfollow_explanation": "Tê vê ajimêrê dişopînî. Ji bo ku êdî şandiyên wan di rojeva xwe de nebînî, wan neşopîne.", - "report_notification.attached_statuses": "{count, plural,one {{count} şandî} other {{count} şandî }} pêvekirî", + "report_notification.attached_statuses": "{count, plural,one {{count} şandî} other {{count} şandî}} pêvekirî", "report_notification.categories.other": "Ên din", "report_notification.categories.spam": "Nexwestî (Spam)", "report_notification.categories.violation": "Binpêkirina rêzîkê", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin", "status.embed": "Hedimandî", "status.favourite": "Bijarte", + "status.filter": "Filter this post", "status.filtered": "Parzûnkirî", "status.hide": "Şandiyê veşêre", "status.history.created": "{name} {date} afirand", @@ -493,13 +510,13 @@ "status.remove_bookmark": "Şûnpêlê jê rake", "status.reply": "Bersivê bide", "status.replyAll": "Mijarê bibersivîne", - "status.report": "{name} gilî bike", + "status.report": "@{name} ragihîne", "status.sensitive_warning": "Naveroka hestiyarî", "status.share": "Parve bike", "status.show_filter_reason": "Bi her awayî nîşan bide", "status.show_less": "Kêmtir nîşan bide", "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", - "status.show_more": "Hêj zehftir nîşan bide", + "status.show_more": "Bêtir nîşan bide", "status.show_more_all": "Bêtir nîşan bide bo hemûyan", "status.show_thread": "Mijarê nîşan bide", "status.uncached_media_warning": "Tune ye", @@ -508,7 +525,7 @@ "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", - "tabs_bar.home": "Serrûpel", + "tabs_bar.home": "Rûpela sereke", "tabs_bar.local_timeline": "Herêmî", "tabs_bar.notifications": "Agahdarî", "tabs_bar.search": "Bigere", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index ad0e1ae31..f6a85a932 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Gwrys", "follow_recommendations.heading": "Holyewgh tus a vynnowgh gweles postow anedha! Ottomma nebes profyansow.", "follow_recommendations.lead": "Postow a dus a holyewgh a wra omdhiskwedhes omma yn aray termynel yn agas lin dre. Na borthewgh own a gammwul, hwi a yll p'eurpynag anholya tus mar es poran!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Staga", "status.favourite": "Merkya vel drudh", + "status.filter": "Filter this post", "status.filtered": "Sidhlys", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index a38374230..4e238273e 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 60b6e75da..1912dd7db 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Paziņojums", "attachments_list.unprocessed": "(neapstrādāti)", - "audio.hide": "Hide audio", + "audio.hide": "Slēpt audio", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", "bundle_column_error.body": "Kaut kas nogāja greizi ielādējot šo komponenti.", @@ -197,6 +197,22 @@ "explore.trending_links": "Jaunumi", "explore.trending_statuses": "Ziņas", "explore.trending_tags": "Tēmturi", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Izpildīts", "follow_recommendations.heading": "Seko cilvēkiem, no kuriem vēlies redzēt ziņas! Šeit ir daži ieteikumi.", "follow_recommendations.lead": "Ziņas no cilvēkiem, kuriem seko, mājas plūsmā tiks parādītas hronoloģiskā secībā. Nebaidies kļūdīties, tu tikpat viegli vari pārtraukt sekot cilvēkiem jebkurā laikā!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Rediģēts {count, plural, one {{count} reize} other {{count} reizes}}", "status.embed": "Iestrādāt", "status.favourite": "Iecienītā", + "status.filter": "Filter this post", "status.filtered": "Filtrēts", "status.hide": "Slēpt", "status.history.created": "{name} izveidots {date}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index a00e1762c..d782dff64 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 2e4aac762..37969475d 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "പൂര്‍ത്തിയായീ", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "ഉൾച്ചേർക്കുക", "status.favourite": "പ്രിയപ്പെട്ടത്", + "status.filter": "Filter this post", "status.filtered": "ഫിൽട്ടർ ചെയ്‌തു", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 3ce4fc0f9..09eaea3f9 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 70683ef42..6a1302329 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Selesai", "follow_recommendations.heading": "Ikuti orang yang anda ingin lihat hantarannya! Di sini ada beberapa cadangan.", "follow_recommendations.lead": "Hantaran daripada orang yang anda ikuti akan muncul dalam susunan kronologi di suapan rumah anda. Jangan takut melakukan kesilapan, anda boleh nyahikuti orang dengan mudah pada bila-bila masa!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Benaman", "status.favourite": "Kegemaran", + "status.filter": "Filter this post", "status.filtered": "Ditapis", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 64c747aa1..b48ebbc16 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Oeps!", "announcement.announcement": "Mededeling", "attachments_list.unprocessed": "(niet verwerkt)", - "audio.hide": "Hide audio", + "audio.hide": "Audio verbergen", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", @@ -197,6 +197,22 @@ "explore.trending_links": "Nieuws", "explore.trending_statuses": "Berichten", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Klaar", "follow_recommendations.heading": "Volg mensen waarvan je graag berichten wil zien! Hier zijn enkele aanbevelingen.", "follow_recommendations.lead": "Berichten van mensen die je volgt zullen in chronologische volgorde onder start verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} keer} other {{count} keer}} bewerkt", "status.embed": "Insluiten", "status.favourite": "Favoriet", + "status.filter": "Filter this post", "status.filtered": "Gefilterd", "status.hide": "Bericht verbergen", "status.history.created": "{name} plaatste dit {date}", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 3f6a1747b..33c06e11e 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -197,6 +197,22 @@ "explore.trending_links": "Nyheiter", "explore.trending_statuses": "Innlegg", "explore.trending_tags": "Emneknaggar", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Ferdig", "follow_recommendations.heading": "Fylg folk du ønsker å sjå innlegg frå! Her er nokre forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Redigert {count, plural, one {{count} gong} other {{count} gonger}}", "status.embed": "Bygg inn", "status.favourite": "Favoritt", + "status.filter": "Filter this post", "status.filtered": "Filtrert", "status.hide": "Gøym innlegg", "status.history.created": "{name} oppretta {date}", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index b0b7f76bc..6e2783713 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -197,6 +197,22 @@ "explore.trending_links": "Nyheter", "explore.trending_statuses": "Innlegg", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Utført", "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Bygge inn", "status.favourite": "Lik", + "status.filter": "Filter this post", "status.filtered": "Filtrert", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index d9d3b20a1..fa3ef3967 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -197,6 +197,22 @@ "explore.trending_links": "Novèlas", "explore.trending_statuses": "Publicacions", "explore.trending_tags": "Etiquetas", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Acabat", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Modificat {count, plural, un {{count} còp} other {{count} còps}}", "status.embed": "Embarcar", "status.favourite": "Apondre als favorits", + "status.filter": "Filter this post", "status.filtered": "Filtrat", "status.hide": "Hide toot", "status.history.created": "{name} o creèt lo {date}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index bc5e9d91c..c77444bff 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 5ba83f01f..04b0868ee 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "O nie!", "announcement.announcement": "Ogłoszenie", "attachments_list.unprocessed": "(nieprzetworzone)", - "audio.hide": "Hide audio", + "audio.hide": "Ukryj dźwięk", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", @@ -197,6 +197,22 @@ "explore.trending_links": "Aktualności", "explore.trending_statuses": "Posty", "explore.trending_tags": "Hasztagi", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Gotowe", "follow_recommendations.heading": "Śledź ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", "follow_recommendations.lead": "Wpisy osób, które śledzisz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać śledzić każdego w każdej chwili!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edytowano {count, plural, one {{count} raz} other {{count} razy}}", "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", + "status.filter": "Filter this post", "status.filtered": "Filtrowany(-a)", "status.hide": "Schowaj toota", "status.history.created": "{name} utworzył(a) {date}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 3fd4c822e..ab1443ece 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -197,6 +197,22 @@ "explore.trending_links": "Notícias", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Salvar", "follow_recommendations.heading": "Siga pessoas que você gostaria de acompanhar! Aqui estão algumas sugestões.", "follow_recommendations.lead": "Toots de pessoas que você segue aparecerão em ordem cronológica na página inicial. Não tenha medo de cometer erros, você pode facilmente deixar de seguir a qualquer momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Favoritar", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Hide toot", "status.history.created": "{name} criou {date}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 0764920e8..ef097b380 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Bolas!", "announcement.announcement": "Anúncio", "attachments_list.unprocessed": "(não processado)", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar áudio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.", @@ -197,6 +197,22 @@ "explore.trending_links": "Notícias", "explore.trending_statuses": "Publicações", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Concluído", "follow_recommendations.heading": "Siga pessoas das quais gostaria de ver publicações! Aqui estão algumas sugestões.", "follow_recommendations.lead": "As publicações das pessoas que segue serão exibidos em ordem cronológica na sua página inicial. Não tenha medo de cometer erros, você pode deixar de seguir as pessoas tão facilmente a qualquer momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural,one {{count} vez} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", + "status.filter": "Filter this post", "status.filtered": "Filtrada", "status.hide": "Esconder publicação", "status.history.created": "{name} criado em {date}", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index e60ce2220..ff5ec9b2a 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Terminat", "follow_recommendations.heading": "Urmărește persoanele ale căror postări te-ar interesa! Iată câteva sugestii.", "follow_recommendations.lead": "Postările de la persoanele la care te-ai abonat vor apărea în ordine cronologică în cronologia principală. Nu-ți fie teamă să faci greșeli, poți să te dezabonezi oricând de la ei la fel de ușor!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Înglobează", "status.favourite": "Favorite", + "status.filter": "Filter this post", "status.filtered": "Sortate", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index c0bfb8b79..e53088e39 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Упс!", "announcement.announcement": "Объявление", "attachments_list.unprocessed": "(не обработан)", - "audio.hide": "Hide audio", + "audio.hide": "Скрыть аудио", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", "bundle_column_error.body": "Что-то пошло не так при загрузке этого компонента.", @@ -197,6 +197,22 @@ "explore.trending_links": "Новости", "explore.trending_statuses": "Посты", "explore.trending_tags": "Хэштеги", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Подпишитесь на людей, чьи посты вы бы хотели видеть. Вот несколько предложений.", "follow_recommendations.lead": "Посты от людей, на которых вы подписаны, будут отображаться в вашей домашней ленте в хронологическом порядке. Не бойтесь ошибиться — вы так же легко сможете отписаться от них в любое время!", @@ -471,10 +487,11 @@ "status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}", "status.embed": "Встроить на свой сайт", "status.favourite": "В избранное", + "status.filter": "Filter this post", "status.filtered": "Отфильтровано", "status.hide": "Скрыть пост", "status.history.created": "{name} создал {date}", - "status.history.edited": "{name} отредактировал {date}", + "status.history.edited": "{name} отредактировал(а) {date}", "status.load_more": "Загрузить остальное", "status.media_hidden": "Файл скрыт", "status.mention": "Упомянуть @{name}", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 3a5faf272..2ebda63cd 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 93a7ea769..7482d15fe 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fatu", "follow_recommendations.heading": "Sighi gente de chie boles bìdere is publicatziones! Càstia custos cussìgios.", "follow_recommendations.lead": "Is messàgios de gente a sa chi ses sighende ant a èssere ammustrados in òrdine cronològicu in sa lìnia de tempus printzipale tua. Non timas de fàghere errores, acabbare de sighire gente est fàtzile in cale si siat momentu!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Afissa", "status.favourite": "Preferidos", + "status.filter": "Filter this post", "status.filtered": "Filtradu", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 18342b7ce..170c34b57 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -197,6 +197,22 @@ "explore.trending_links": "පුවත්", "explore.trending_statuses": "තනතුරු", "explore.trending_tags": "හැෂ් ටැග්", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "කළා", "follow_recommendations.heading": "ඔබ පළ කිරීම් බැලීමට කැමති පුද්ගලයින් අනුගමනය කරන්න! මෙන්න යෝජනා කිහිපයක්.", "follow_recommendations.lead": "ඔබ අනුගමන කරන පුද්ගලයින්ගේ පළ කිරීම් ඔබගේ නිවසේ සංග්‍රහයේ කාලානුක්‍රමික අනුපිළිවෙලට පෙන්වනු ඇත. වැරදි කිරීමට බිය නොවන්න, ඔබට ඕනෑම වේලාවක පහසුවෙන් මිනිසුන් අනුගමනය කළ නොහැක!", @@ -471,6 +487,7 @@ "status.edited_x_times": "සංස්කරණය කළා {count, plural, one {{count} කාලය} other {{count} වාර}}", "status.embed": "එබ්බවූ", "status.favourite": "ප්‍රියතම", + "status.filter": "Filter this post", "status.filtered": "පෙරන ලද", "status.hide": "Hide toot", "status.history.created": "{name} නිර්මාණය {date}", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index aff5960d9..8aeb2aec6 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -197,6 +197,22 @@ "explore.trending_links": "Novinky", "explore.trending_statuses": "Príspevky", "explore.trending_tags": "Haštagy", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Následuj ľudí od ktorých by si chcel/a vidieť príspevky! Tu sú nejaké návrhy.", "follow_recommendations.lead": "Príspevky od ľudi ktorých sledujete sa zobrazia v chronologickom poradí na Vašej nástenke. Nebojte sa spraviť chyby, vždy môžete zrušiť sledovanie konkrétnych ľudí!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Vložiť", "status.favourite": "Páči sa mi", + "status.filter": "Filter this post", "status.filtered": "Filtrované", "status.hide": "Skry príspevok", "status.history.created": "{name} vytvoril/a {date}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index af736ed59..c793d9de8 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Uups!", "announcement.announcement": "Objava", "attachments_list.unprocessed": "(neobdelano)", - "audio.hide": "Hide audio", + "audio.hide": "Skrij zvok", "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", "bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.", @@ -197,6 +197,22 @@ "explore.trending_links": "Novice", "explore.trending_statuses": "Objave", "explore.trending_tags": "Ključniki", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Opravljeno", "follow_recommendations.heading": "Sledite osebam, katerih objave želite videti! Tukaj je nekaj predlogov.", "follow_recommendations.lead": "Objave oseb, ki jim sledite, se bodo prikazale v kronološkem zaporedju v vašem domačem viru. Ne bojte se storiti napake, osebam enako enostavno nehate slediti kadar koli!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}", "status.embed": "Vgradi", "status.favourite": "Priljubljen", + "status.filter": "Filter this post", "status.filtered": "Filtrirano", "status.hide": "Skrij tut", "status.history.created": "{name}: ustvarjeno {date}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 4f43cec0b..0b7fabb45 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hëm!", "announcement.announcement": "Lajmërim", "attachments_list.unprocessed": "(e papërpunuar)", - "audio.hide": "Hide audio", + "audio.hide": "Fshihe audion", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", "bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.", @@ -197,6 +197,22 @@ "explore.trending_links": "Lajme", "explore.trending_statuses": "Postime", "explore.trending_tags": "Hashtagë", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "U bë", "follow_recommendations.heading": "Ndiqni persona prej të cilëve doni të shihni postime! Ja ca sugjerime.", "follow_recommendations.lead": "Postimet prej personash që ndiqni do të shfaqen në rend kohor te prurja juaj kryesore. Mos kini frikë të bëni gabime, mund të ndalni po aq kollaj ndjekjen e dikujt, në çfarëdo kohe!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Përpunuar {count, plural, one {{count} herë} other {{count} herë}}", "status.embed": "Trupëzim", "status.favourite": "I parapëlqyer", + "status.filter": "Filter this post", "status.filtered": "I filtruar", "status.hide": "Fshihe mesazhin", "status.history.created": "{name} u krijua më {date}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 2f35ba2c4..8e955727d 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Ugradi na sajt", "status.favourite": "Omiljeno", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index d9d67edf0..442e7ee3d 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Угради на сајт", "status.favourite": "Омиљено", + "status.filter": "Filter this post", "status.filtered": "Филтрирано", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 9e3b9cf37..a150deadb 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hoppsan!", "announcement.announcement": "Meddelande", "attachments_list.unprocessed": "(obearbetad)", - "audio.hide": "Hide audio", + "audio.hide": "Dölj audio", "autosuggest_hashtag.per_week": "{count} per vecka", "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", "bundle_column_error.body": "Något gick fel medan denna komponent laddades.", @@ -197,6 +197,22 @@ "explore.trending_links": "Nyheter", "explore.trending_statuses": "Inlägg", "explore.trending_tags": "Hashtaggar", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Klar", "follow_recommendations.heading": "Följ personer som du skulle vilja se inlägg från! Här finns det några förslag.", "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hem-flöde. Var inte rädd för att göra misstag, du kan sluta följa människor lika enkelt när som helst!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}", "status.embed": "Bädda in", "status.favourite": "Favorit", + "status.filter": "Filter this post", "status.filtered": "Filtrerat", "status.hide": "Hide toot", "status.history.created": "{name} skapade {date}", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index bc5e9d91c..c77444bff 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 021315b33..728cfac11 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "கிடத்து", "status.favourite": "விருப்பத்துக்குகந்த", + "status.filter": "Filter this post", "status.filtered": "வடிகட்டு", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 77232ff5f..beba8e333 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index be49846cb..d5cc02b10 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "ఎంబెడ్", "status.favourite": "ఇష్టపడు", + "status.filter": "Filter this post", "status.filtered": "వడకట్టబడిన", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index e901b9647..38539d512 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "อุปส์!", "announcement.announcement": "ประกาศ", "attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)", - "audio.hide": "Hide audio", + "audio.hide": "ซ่อนเสียง", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", "bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", @@ -197,6 +197,22 @@ "explore.trending_links": "ข่าว", "explore.trending_statuses": "โพสต์", "explore.trending_tags": "แฮชแท็ก", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", "follow_recommendations.lead": "โพสต์จากผู้คนที่คุณติดตามจะแสดงตามลำดับเวลาในฟีดหน้าแรกของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้อย่างง่ายดายเมื่อใดก็ตาม!", @@ -471,6 +487,7 @@ "status.edited_x_times": "แก้ไข {count, plural, other {{count} ครั้ง}}", "status.embed": "ฝัง", "status.favourite": "ชื่นชอบ", + "status.filter": "Filter this post", "status.filtered": "กรองอยู่", "status.hide": "ซ่อนโพสต์", "status.history.created": "{name} ได้สร้างเมื่อ {date}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index b69153a62..35c888e47 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -12,7 +12,7 @@ "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", "account.edit_profile": "Profili düzenle", - "account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç", + "account.enable_notifications": "@{name}'in gönderilerini bana bildir", "account.endorse": "Profilimde öne çıkar", "account.follow": "Takip et", "account.followers": "Takipçi", @@ -20,23 +20,23 @@ "account.followers_counter": "{count, plural, one {{counter} Takipçi} other {{counter} Takipçi}}", "account.following": "Takip Ediliyor", "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}", - "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.", + "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi takip etmiyor.", "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined": "{date} tarihinde katıldı", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", - "account.mention": "@{name} kişisinden bahset", + "account.mention": "@{name}'i an", "account.moved_to": "{name} şuraya taşındı:", - "account.mute": "@{name} adlı kişiyi sessize al", - "account.mute_notifications": "@{name} adlı kişinin bildirimlerini kapat", + "account.mute": "@{name}'i susstur", + "account.mute_notifications": "@{name}'in bildirimlerini sustur", "account.muted": "Susturuldu", "account.posts": "Gönderiler", "account.posts_with_replies": "Gönderiler ve yanıtlar", - "account.report": "@{name} adlı kişiyi bildir", + "account.report": "@{name}'i şikayet et", "account.requested": "Onay bekleniyor. Takip isteğini iptal etmek için tıklayın", - "account.share": "@{name} adlı kişinin profilini paylaş", + "account.share": "@{name}'in profilini paylaş", "account.show_reblogs": "@{name} kişisinin boostlarını göster", "account.statuses_counter": "{count, plural, one {{counter} Gönderi} other {{counter} Gönderi}}", "account.unblock": "@{name} adlı kişinin engelini kaldır", @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hay aksi!", "announcement.announcement": "Duyuru", "attachments_list.unprocessed": "(işlenmemiş)", - "audio.hide": "Hide audio", + "audio.hide": "Sesi gizle", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", "bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.", @@ -197,6 +197,22 @@ "explore.trending_links": "Haberler", "explore.trending_statuses": "Gönderiler", "explore.trending_tags": "Etiketler", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Tamam", "follow_recommendations.heading": "Gönderilerini görmek isteyeceğiniz kişileri takip edin! Burada bazı öneriler bulabilirsiniz.", "follow_recommendations.lead": "Takip ettiğiniz kişilerin gönderileri anasayfa akışınızda kronolojik sırada görünmeye devam edecek. Hata yapmaktan çekinmeyin, kişileri istediğiniz anda kolayca takipten çıkabilirsiniz!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi", "status.embed": "Gömülü", "status.favourite": "Favorilerine ekle", + "status.filter": "Filter this post", "status.filtered": "Filtrelenmiş", "status.hide": "Gönderiyi sakla", "status.history.created": "{name} oluşturdu {date}", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 9e72174d1..c2739e181 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index bc5e9d91c..c77444bff 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index e26a73f62..e1b10445d 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ой!", "announcement.announcement": "Оголошення", "attachments_list.unprocessed": "(не оброблено)", - "audio.hide": "Hide audio", + "audio.hide": "Сховати аудіо", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", "bundle_column_error.body": "Щось пішло не так під час завантаження цього компоненту.", @@ -197,6 +197,22 @@ "explore.trending_links": "Новини", "explore.trending_statuses": "Дописи", "explore.trending_tags": "Хештеґи", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Підпишіться на людей, чиї дописи ви хочете бачити! Ось деякі пропозиції.", "follow_recommendations.lead": "Дописи від людей, за якими ви стежите, з'являться в хронологічному порядку у вашій домашній стрічці. Не бійся помилятися, ви можете відписатися від людей так само легко в будь-який час!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Відредаговано {count, plural, one {{count} раз} few {{count} рази} many {{counter} разів} other {{counter} разів}}", "status.embed": "Вбудувати", "status.favourite": "Подобається", + "status.filter": "Filter this post", "status.filtered": "Відфільтровано", "status.hide": "Сховати дмух", "status.history.created": "{name} створює {date}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index be9b8b80d..19cee9c2a 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 016fa6b76..3dc6db112 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ốiii!", "announcement.announcement": "Có gì mới?", "attachments_list.unprocessed": "(chưa xử lí)", - "audio.hide": "Hide audio", + "audio.hide": "Ẩn âm thanh", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.", @@ -197,6 +197,22 @@ "explore.trending_links": "Tin tức", "explore.trending_statuses": "Tút", "explore.trending_tags": "Hashtag", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Xong", "follow_recommendations.heading": "Theo dõi những người bạn muốn đọc tút của họ! Dưới đây là vài gợi ý.", "follow_recommendations.lead": "Tút từ những người bạn theo dõi sẽ hiện theo thứ tự thời gian trên bảng tin. Đừng ngại, bạn có thể dễ dàng ngưng theo dõi họ bất cứ lúc nào!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Đã sửa {count, plural, other {{count} lần}}", "status.embed": "Nhúng", "status.favourite": "Thích", + "status.filter": "Filter this post", "status.filtered": "Bộ lọc", "status.hide": "Ẩn tút", "status.history.created": "{name} tạo lúc {date}", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index e96b64cc4..92201375d 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index f250aa1b7..9241eeec8 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未处理)", - "audio.hide": "Hide audio", + "audio.hide": "隐藏音频", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", "bundle_column_error.body": "载入这个组件时发生了错误。", @@ -110,8 +110,8 @@ "compose_form.publish": "发布", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "保存更改", - "compose_form.sensitive.hide": "{count, plural, one {将媒体标记为敏感内容} other {将媒体标记为敏感内容}}", - "compose_form.sensitive.marked": "{count, plural, one {媒体已被标记为敏感内容} other {媒体已被标记为敏感内容}}", + "compose_form.sensitive.hide": "标记媒体为敏感内容", + "compose_form.sensitive.marked": "媒体已被标记为敏感内容", "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容", "compose_form.spoiler.marked": "移除内容警告", "compose_form.spoiler.unmarked": "添加内容警告", @@ -197,6 +197,22 @@ "explore.trending_links": "最新消息", "explore.trending_statuses": "嘟文", "explore.trending_tags": "话题标签", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "完成", "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。", "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!", @@ -204,8 +220,8 @@ "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", "generic.saved": "已保存", - "getting_started.developers": "开发", - "getting_started.directory": "用户目录", + "getting_started.developers": "开发者", + "getting_started.directory": "个人资料目录", "getting_started.documentation": "文档", "getting_started.heading": "开始使用", "getting_started.invite": "邀请用户", @@ -437,7 +453,7 @@ "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", "report.unfollow": "取消关注 @{name}", "report.unfollow_explanation": "你正在关注此账户。如果要想在你的主页上不再看到他们的帖子,取消对他们的关注即可。", - "report_notification.attached_statuses": "{count, plural, one {{count} 嘟文} other {{count} 嘟文}} 附件", + "report_notification.attached_statuses": "附上 {count} 条嘟文", "report_notification.categories.other": "其他", "report_notification.categories.spam": "骚扰", "report_notification.categories.violation": "违反规则", @@ -471,6 +487,7 @@ "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "嵌入", "status.favourite": "喜欢", + "status.filter": "Filter this post", "status.filtered": "已过滤", "status.hide": "屏蔽嘟文", "status.history.created": "{name} 创建于 {date}", @@ -521,7 +538,7 @@ "timeline_hint.resources.followers": "关注者", "timeline_hint.resources.follows": "关注", "timeline_hint.resources.statuses": "更早的嘟文", - "trends.counter_by_accounts": "过去{day}天有{counter}人讨论", + "trends.counter_by_accounts": "过去 {day} 天有 {counter} 人讨论", "trends.trending_now": "现在流行", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", "units.short.billion": "{count} B", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index f17df83c4..fdc206800 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "完成", "follow_recommendations.heading": "跟隨人們以看到來自他們的嘟文!這裡有些建議。", "follow_recommendations.lead": "您跟隨對象知嘟文將會以時間順序顯示於您的 home feed 上。別擔心犯下錯誤,您隨時可以取消跟隨人們!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "嵌入", "status.favourite": "最愛", + "status.filter": "Filter this post", "status.filtered": "已過濾", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index a18e92066..13eee62de 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未經處理)", - "audio.hide": "Hide audio", + "audio.hide": "隱藏音訊", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", "bundle_column_error.body": "載入此元件時發生錯誤。", @@ -197,6 +197,22 @@ "explore.trending_links": "最新消息", "explore.trending_statuses": "嘟文", "explore.trending_tags": "主題標籤", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "完成", "follow_recommendations.heading": "跟隨您想檢視其嘟文的人!這裡有一些建議。", "follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", @@ -471,6 +487,7 @@ "status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "內嵌", "status.favourite": "最愛", + "status.filter": "Filter this post", "status.filtered": "已過濾", "status.hide": "隱藏嘟文", "status.history.created": "{name} 於 {date} 建立", diff --git a/config/locales/da.yml b/config/locales/da.yml index a08748deb..9538186c4 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1180,6 +1180,8 @@ da: edit: add_keyword: Tilføj nøgleord keywords: Nøgleord + statuses: Individuelle indlæg + statuses_hint_html: Dette filter gælder for udvalgte, individuelle indlæg, uanset om de matcher nøgleordene nedenfor. Disse indlæg kan gennemgås og fjernes fra filteret ved at klikke hér. title: Redigere filter errors: deprecated_api_multiple_keywords: Disse parametre kan ikke ændres fra denne applikation, da de gælder for flere end ét filternøgleord. Brug en nyere applikation eller webgrænsefladen. @@ -1193,10 +1195,23 @@ da: keywords: one: "%{count} nøgleord" other: "%{count} nøgleord" + statuses: + one: "%{count} indlæg" + other: "%{count} indlæg" + statuses_long: + one: "%{count} individuelt indlæg skjult" + other: "%{count} individuelle indlæg skjult" title: Filtre new: save: Gem nye filter title: Tilføj nyt filter + statuses: + back_to_filter: Returnér til filter + batch: + remove: Fjern fra filter + index: + hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webgrænsefladen. + title: Filtrerede indlæg footer: developers: Udviklere more: Mere… diff --git a/config/locales/devise.tr.yml b/config/locales/devise.tr.yml index 98baf2916..86b1c951f 100644 --- a/config/locales/devise.tr.yml +++ b/config/locales/devise.tr.yml @@ -8,7 +8,7 @@ tr: failure: already_authenticated: Zaten oturum açtınız. inactive: Hesabınız henüz etkinleştirilmedi. - invalid: Geçersiz %{authentication_keys} ya da şifre. + invalid: Geçersiz %{authentication_keys} ya da parola. last_attempt: Hesabınız kilitlenmeden önce bir kez daha denemeniz gerekir. locked: Hesabınız kilitlendi. not_found_in_database: Geçersiz %{authentication_keys} ya da parola. @@ -31,7 +31,7 @@ tr: subject: 'Mastodon: E-posta adresi değişti' title: Yeni e-posta adresi password_change: - explanation: Hesabınızın şifresi değiştirildi. + explanation: Hesabınızın parolası değiştirildi. extra: Parolanızı değiştirmediyseniz, büyük olasılıkla birileri hesabınıza erişmiş olabilir. Lütfen derhal parolanızı değiştirin veya hesabınız kilitlendiyse sunucu yöneticisine başvurun. subject: 'Mastodon: Parola değiştirildi' title: Parola değiştirildi @@ -81,11 +81,11 @@ tr: failure: '%{kind}''den kimliğiniz doğrulanamadı çünkü "%{reason}".' success: "%{kind} hesabından başarıyla kimlik doğrulaması yapıldı." passwords: - no_token: Bu sayfaya şifre sıfırlama e-postasından gelmeden erişemezsiniz. Şifre sıfırlama e-postasından geliyorsanız lütfen sağlanan tam URL'yi kullandığınızdan emin olun. + no_token: Bu sayfaya parola sıfırlama e-postasından gelmeden erişemezsiniz. Parola sıfırlama e-postasından geliyorsanız lütfen sağlanan tam URL'yi kullandığınızdan emin olun. send_instructions: E-posta adresiniz veritabanımızda varsa, e-posta adresinize birkaç dakika içinde bir parola kurtarma bağlantısı gönderilir. Bu e-postayı almadıysanız, lütfen spam klasörünüzü kontrol edin. send_paranoid_instructions: E-posta adresiniz veritabanımızda varsa, e-posta adresinize birkaç dakika içinde bir parola kurtarma bağlantısı gönderilir. Bu e-postayı almadıysanız, lütfen spam klasörünüzü kontrol edin. - updated: Şifreniz başarılı bir şekilde değiştirildi. Şu an oturum açtınız. - updated_not_active: Şifreniz başarıyla değiştirildi. + updated: Parolanız başarılı bir şekilde değiştirildi. Şu an oturum açtınız. + updated_not_active: Parolanız başarıyla değiştirildi. registrations: destroyed: Görüşürüz! hesabın başarıyla iptal edildi. Umarız seni sonra tekrar görürüz. signed_up: Hoş geldiniz! Başarılı bir şekilde oturum açtınız. diff --git a/config/locales/doorkeeper.ku.yml b/config/locales/doorkeeper.ku.yml index f92a228d1..c4e66aef1 100644 --- a/config/locales/doorkeeper.ku.yml +++ b/config/locales/doorkeeper.ku.yml @@ -67,7 +67,7 @@ ku: title: Destûr hildana vê kodê jê bigire û ji sepanê re pêve bike. authorized_applications: buttons: - revoke: Betal bike + revoke: Rake confirmations: revoke: Ma tu bawerî? index: @@ -149,7 +149,7 @@ ku: scopes: admin:read: hemû daneyên li ser rajekar bixwîne admin:read:accounts: zanyariyên hestiyar yên hemû ajimêran li ser rajekar bixwîne - admin:read:reports: zanyariyên hestiyar yên hemû gilîyan û ajimêrên gilêkirî li ser rajekar bixwîne + admin:read:reports: zanyariyên hestiyar yên hemû ragihandinan û ajimêrên ragihandî li ser rajekar bixwîne admin:write: hemû daneyên li ser rajekar biguherîne admin:write:accounts: di ajimêrê de çalakiyên li hev kirî pêk bîne admin:write:reports: di ragihandinê de çalakiyên li hev kirî pêk bîne @@ -181,5 +181,5 @@ ku: write:media: pelên medya bar bike write:mutes: mirovan û axaftinan bêdeng bike write:notifications: agahdariyên xwe pak bike - write:reports: mirovên din gilî bike + write:reports: mirovên din ragihîne write:statuses: şandiyekê biweşîne diff --git a/config/locales/doorkeeper.tr.yml b/config/locales/doorkeeper.tr.yml index 351d271d0..51d0dff08 100644 --- a/config/locales/doorkeeper.tr.yml +++ b/config/locales/doorkeeper.tr.yml @@ -81,7 +81,7 @@ tr: errors: messages: access_denied: Kaynak sahibi veya yetkilendirme sunucusu isteği reddetti. - credential_flow_not_configured: Kaynak Sahibi Şifresi Kimlik Bilgileri akışı Doorkeeper.configure.resource_owner_from_credentials 'ın yapılandırılmamış olması nedeniyle başarısız oldu. + credential_flow_not_configured: Kaynak Sahibi Parolası Kimlik Bilgileri akışı Doorkeeper.configure.resource_owner_from_credentials 'ın yapılandırılmamış olması nedeniyle başarısız oldu. invalid_client: İstemcinin kimlik doğrulaması bilinmeyen istemci, istemci kimlik doğrulamasının dahil olmaması veya desteklenmeyen kimlik doğrulama yöntemi nedeniyle başarısız oldu. invalid_grant: Sağlanan yetkilendirme izni geçersiz, süresi dolmuş, iptal edilmiş, yetkilendirme isteğinde kullanılan yönlendirme URL'siyle eşleşmiyor veya başka bir istemciye verilmiş. invalid_redirect_uri: Dahil edilmiş yönlendirme URL'si geçersiz. diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 6ac1eb45d..3eabb665a 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -31,7 +31,7 @@ eo: privacy_policy: Politiko de privateco rules: Reguloj de la servilo see_whats_happening: Vidi kio okazas - server_stats: 'Statistiko de la servilo:' + server_stats: 'Statistikoj de la servilo:' source_code: Fontkodo status_count_after: one: mesaĝo diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index c4d9ee969..72c2ad347 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1181,6 +1181,8 @@ es-AR: edit: add_keyword: Agregar palabra clave keywords: Palabras clave + statuses: Mensajes individuales + statuses_hint_html: Este filtro se aplica a los mensajes individuales seleccionados, independientemente de si coinciden con las palabras clave de abajo. Podés revisar estos mensajes y eliminarlos del filtro haciendo clic acá. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar de esta aplicación porque se aplican a más de una palabra clave de filtro. Usá una aplicación más reciente o la interface web. @@ -1194,10 +1196,23 @@ es-AR: keywords: one: "%{count} palabra clave" other: "%{count} palabras clave" + statuses: + one: "%{count} mensaje" + other: "%{count} mensajes" + statuses_long: + one: "%{count} mensaje individual oculto" + other: "%{count} mensajes individuales ocultos" title: Filtros new: save: Guardar nuevo filtro title: Agregar nuevo filtro + statuses: + back_to_filter: Volver al filtro + batch: + remove: Quitar del filtro + index: + hint: Este filtro se aplica a la selección de mensajes individuales independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. + title: Mensajes filtrados footer: developers: Desarrolladores more: Más… diff --git a/config/locales/es.yml b/config/locales/es.yml index 568ad46d9..8d2ed1a33 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1181,6 +1181,8 @@ es: edit: add_keyword: Añadir palabra clave keywords: Palabras clave + statuses: Publicaciones individuales + statuses_hint_html: Este filtro se aplica a las publicaciones individuales seleccionadas, independientemente de si coinciden con las palabras clave de abajo. Puedes revisar estos mensajes y eliminarlos del filtro pulsando aquí. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web. @@ -1194,10 +1196,23 @@ es: keywords: one: "%{count} palabra clave" other: "%{count} palabras clave" + statuses: + one: "%{count} publicación" + other: "%{count} publicaciones" + statuses_long: + one: "%{count} publicación individual oculta" + other: "%{count} publicaciones individuales ocultas" title: Filtros new: save: Guardar nuevo filtro title: Añadir nuevo filtro + statuses: + back_to_filter: Volver a filtrar + batch: + remove: Eliminar del filtro + index: + hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más mensajes a este filtro desde la interfaz Web. + title: Publicaciones filtradas footer: developers: Desarrolladores more: Mas… diff --git a/config/locales/fi.yml b/config/locales/fi.yml index bbc44d644..b48d8ab9f 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -38,6 +38,7 @@ fi: one: julkaisun other: julkaisua status_count_before: Julkaistu + tagline: Hajautettu sosiaalinen verkosto terms: Käyttöehdot unavailable_content: Moderoidut palvelimet unavailable_content_description: @@ -102,11 +103,17 @@ fi: avatar: Profiilikuva by_domain: Verkkotunnus change_email: + changed_msg: Sähköpostin vaihto onnistui! current_email: Nykyinen sähköposti label: Vaihda sähköposti new_email: Uusi sähköposti submit: Vaihda sähköposti title: Vaihda sähköposti käyttäjälle %{username} + change_role: + changed_msg: Rooli vaihdettu onnistuneesti! + label: Vaihda roolia + no_role: Ei roolia + title: Vaihda roolia käyttäjälle %{username} confirm: Vahvista confirmed: Vahvistettu confirming: Vahvistetaan @@ -150,6 +157,7 @@ fi: active: Aktiivinen all: Kaikki pending: Odottavat + silenced: Rajoitettu suspended: Jäähyllä title: Moderointi moderation_notes: Moderointimerkinnät @@ -157,10 +165,14 @@ fi: most_recent_ip: Viimeisin IP no_account_selected: Yhtään tiliä ei muutettu, koska mitään ei valittu no_limits_imposed: Rajoituksia ei ole asetettu + no_role_assigned: Roolia ei ole määritetty not_subscribed: Ei tilaaja pending: Odottaa tarkistusta perform_full_suspension: Siirrä kokonaan jäähylle previous_strikes: Aiemmat varoitukset + previous_strikes_description_html: + one: Tällä tilillä on yksi varoitus. + other: Tällä tilillä on %{count} varoitusta. promote: Ylennä protocol: Protokolla public: Julkinen @@ -180,6 +192,7 @@ fi: reset: Palauta reset_password: Palauta salasana resubscribe: Tilaa uudelleen + role: Rooli search: Hae search_same_email_domain: Muut käyttäjät, joilla on sama sähköpostiverkkotunnus search_same_ip: Muut käyttäjät samalla IP-osoitteella @@ -358,6 +371,7 @@ fi: enable: Ota käyttöön enabled: Käytössä enabled_msg: Emojin käyttöönotto onnistui + image_hint: PNG tai GIF enintään %{size} list: Listaa listed: Listassa new: @@ -414,6 +428,7 @@ fi: destroyed_msg: Verkkotunnuksen esto on peruttu domain: Verkkotunnus edit: Muokkaa verkkotunnuksen estoa + existing_domain_block: Olet jo asettanut tiukemmat rajoitukset %{name}. existing_domain_block_html: Olet jo asettanut %{name} tiukemmat rajat ja sinun täytyy poistaa se ensin. new: create: Luo esto @@ -464,14 +479,43 @@ fi: title: Noudata suosituksia unsuppress: Palauta seuraa suositus instances: + availability: + failure_threshold_reached: Epäonnistumisen kynnys saavutettu %{date}. + failures_recorded: + one: Epäonnistuneita yrityksiä %{count} päivässä. + other: Epäonnistuneita yrityksiä %{count} päivää. + no_failures_recorded: Ei epäonnistumisia kirjattu. + title: Saatavuus + warning: Viimeisin yritys yhdistää yhteys tähän palvelimeen on epäonnistunut back_to_all: Kaikki back_to_limited: Rajoitettu back_to_warning: Varoitus by_domain: Verkkotunnus confirm_purge: Oletko varma, että haluat pysyvästi poistaa tiedot tältä verkkotunnukselta? + content_policies: + comment: Sisäinen huomautus + description_html: Voit määrittää sisältökäytännöt, joita sovelletaan kaikkiin tämän verkkotunnuksen ja sen aliverkkotunnuksien tileihin. + policies: + reject_media: Hylkää media + reject_reports: Hylkää raportit + silence: Rajoitus + suspend: Jäädytä + policy: Käytännöt + reason: Julkinen syy + title: Sisällön toimintatavat + dashboard: + instance_accounts_dimension: Seuratuimmat tilit + instance_accounts_measure: tallennetut tilit + instance_followers_measure: seuraajamme siellä + instance_follows_measure: heidän seuraajansa täällä + instance_languages_dimension: Suosituimmat kielet + instance_media_attachments_measure: tallennetut median liitteet + instance_reports_measure: niitä koskevat raportit + instance_statuses_measure: tallennetut viestit delivery: all: Kaikki clear: Tyhjennä toimitusvirheet + failing: Epäonnistuminen restart: Käynnistä toimitus uudelleen stop: Lopeta toimitus unavailable: Ei saatavilla @@ -480,6 +524,9 @@ fi: delivery_error_hint: Jos toimitus ei ole mahdollista %{count} päivän aikana, se merkitään automaattisesti toimittamattomaksi. destroyed_msg: Tiedot %{domain} on nyt jonossa välitöntä poistoa varten. empty: Verkkotunnuksia ei löytynyt. + known_accounts: + one: "%{count} tunnettu tili" + other: "%{count} tunnettua tiliä" moderation: all: Kaikki limited: Rajoitettu @@ -487,12 +534,14 @@ fi: private_comment: Yksityinen kommentti public_comment: Julkinen kommentti purge: Tyhjennä + purge_description_html: Jos uskot tämän verkkotunnuksen olevan offline-tilassa, voit poistaa kaikki tilitietueet ja niihin liittyvät tiedot sinun tallennustilasta. Tämä voi kestää jonkin aikaa. title: Tiedossa olevat instanssit total_blocked_by_us: Estetty meidän toimesta total_followed_by_them: Heidän seuraama total_followed_by_us: Meidän seuraama total_reported: Niitä koskevat raportit total_storage: Medialiitteet + totals_time_period_hint_html: Alla näkyvät yhteenlasketut tiedot sisältävät koko ajan. invites: deactivate_all: Poista kaikki käytöstä filter: @@ -547,6 +596,7 @@ fi: action_taken_by: Toimenpiteen tekijä actions: delete_description_html: Ilmoitetut viestit poistetaan ja kirjataan varoitus, joka auttaa sinua saman tilin tulevista rikkomuksista. + mark_as_sensitive_description_html: Ilmoitettujen viestien media merkitään arkaluonteisiksi ja varoitus tallennetaan, jotta voit kärjistää saman tilin tulevia rikkomuksia. other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja ilmoitetun tilin viestinnän mukauttamiseksi. resolve_description_html: Ilmoitettua tiliä vastaan ei ryhdytä toimenpiteisiin, varoitusta ei kirjata ja raportti suljetaan. silence_description_html: Profiili näkyy vain niille, jotka jo seuraavat sitä tai etsivät sen manuaalisesti, mikä rajoittaa merkittävästi kattavuutta. Se voidaan aina palauttaa. @@ -596,6 +646,20 @@ fi: unresolved: Ratkaisemattomat updated_at: Päivitetty view_profile: Näytä profiili + roles: + add_new: Lisää rooli + assigned_users: + one: "%{count} käyttäjä" + other: "%{count} käyttäjää" + categories: + administration: Ylläpito + devops: Operaattorit + invites: Kutsut + moderation: Moderointi + special: Erikois + delete: Poista + description_html: Käyttäjän roolit, voit muokata toimintoja ja alueita mitä sinun Mastodon käyttäjät voivat käyttää. + edit: Muokkaa "%{name}" roolia rules: add_new: Lisää sääntö delete: Poista @@ -773,13 +837,36 @@ fi: trending_rank: 'Nousussa #%{rank}' usable: Voidaan käyttää usage_comparison: Käytetty %{today} kertaa tänään, verrattuna %{yesterday} eiliseen + used_by_over_week: + one: Yhden henkilön käyttämä viime viikon aikana + other: Käyttänyt %{count} henkilöä viimeisen viikon aikana title: Trendit + trending: Nousussa warning_presets: add_new: Lisää uusi delete: Poista edit_preset: Muokkaa varoituksen esiasetusta empty: Et ole vielä määrittänyt yhtään varoitusesiasetusta. title: Hallinnoi varoitusesiasetuksia + webhooks: + add_new: Lisää päätepiste + delete: Poista + disable: Poista käytöstä + disabled: Ei käytössä + edit: Muokkaa päätepistettä + empty: Sinulla ei ole vielä määritetty webhook-päätepisteitä. + enable: Ota käyttöön + enabled: Aktiivinen + enabled_events: + one: 1 aktivoitu tapahtuma + other: "%{count} aktivoitua tapahtumaa" + events: Tapahtumat + new: Uusi webhook + rotate_secret: Vaihda salaus + secret: Salainen tunnus + status: Tila + title: Webhookit + webhook: Webhook admin_mailer: new_appeal: actions: @@ -964,10 +1051,12 @@ fi: appealed_msg: Valituksesi on lähetetty. Jos se hyväksytään, sinulle ilmoitetaan. appeals: submit: Lähetä valitus + approve_appeal: Hyväksy valitus associated_report: Liittyvä raportti created_at: Päivätty description_html: Nämä ovat tiliäsi koskevia toimia ja varoituksia, jotka %{instance} henkilökunta on lähettänyt sinulle. recipient: Osoitettu + reject_appeal: Hylkää valitus status: 'Viesti #%{id}' status_removed: Viesti on jo poistettu järjestelmästä title: "%{action} alkaen %{date}" @@ -1030,14 +1119,23 @@ fi: public: Julkiset aikajanat thread: Keskustelut edit: + add_keyword: Lisää avainsana + keywords: Avainsanat title: Muokkaa suodatinta errors: invalid_context: Ei sisältöä tai se on virheellinen index: + contexts: Suodattimet %{contexts} delete: Poista empty: Sinulla ei ole suodattimia. + expires_in: Vanhenee %{distance} + expires_on: Vanhenee %{date} + keywords: + one: "%{count} avainsana" + other: "%{count} avainsanaa" title: Suodattimet new: + save: Tallenna uusi suodatin title: Lisää uusi suodatin footer: developers: Kehittäjille @@ -1156,6 +1254,8 @@ fi: copy_account_note_text: 'Tämä käyttäjä siirtyi paikasta %{acct}, tässä olivat aiemmat muistiinpanosi niistä:' notification_mailer: admin: + report: + subject: "%{name} lähetti raportin" sign_up: subject: "%{name} kirjautunut" digest: @@ -1165,6 +1265,9 @@ fi: new_followers_summary: one: Olet myös saanut yhden uuden seuraajan! Juhuu! other: Olet myös saanut %{count} uutta seuraajaa! Aivan mahtavaa! + subject: + one: "1 uusi ilmoitus viime käyntisi jälkeen 🐘" + other: "%{count} uutta ilmoitusta viime käyntisi jälkeen 🐘" title: Poissaollessasi… favourite: body: "%{name} tykkäsi tilastasi:" @@ -1278,6 +1381,11 @@ fi: reports: errors: invalid_rules: ei viittaa voimassa oleviin sääntöihin + rss: + content_warning: 'Sisällön varoitus:' + descriptions: + account: Julkiset viestit lähettäjältä @%{acct} + tag: 'Julkiset viestit merkitty #%{hashtag}' scheduled_statuses: over_daily_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan tälle päivälle over_total_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan @@ -1365,6 +1473,7 @@ fi: disallowed_hashtags: one: 'sisälsi aihetunnisteen jota ei sallita: %{tags}' other: 'sisälsi aihetunnisteet joita ei sallita: %{tags}' + edited_at_html: Muokattu %{date} errors: in_reply_not_found: Viesti, johon yrität vastata, ei näytä olevan olemassa. open_in_web: Avaa selaimessa @@ -1435,6 +1544,9 @@ fi: pinned: Kiinnitetty tuuttaus reblogged: buustasi sensitive_content: Arkaluontoista sisältöä + strikes: + errors: + too_late: On liian myöhäistä vedota tähän varoitukseen tags: does_not_match_previous_name: ei vastaa edellistä nimeä terms: @@ -1477,6 +1589,13 @@ fi: explanation: Pyysit täydellistä varmuuskopiota Mastodon-tilistäsi. Voit nyt ladata sen! subject: Arkisto on valmiina ladattavaksi title: Arkiston tallennus + suspicious_sign_in: + change_password: vaihda salasanasi + details: 'Tässä on tiedot kirjautumisesta:' + explanation: Olemme havainneet kirjautumisen tilillesi uudesta IP-osoitteesta. + further_actions_html: Jos et ollut sinä, suosittelemme, että %{action} teet välittömästi ja otat kaksivaiheisen todennuksen käyttöön tilisi turvallisuuden varmistamiseksi. + subject: Tiliäsi on käytetty uudesta IP-osoitteesta + title: Uusi kirjautuminen warning: appeal: Lähetä valitus appeal_description: Jos uskot, että tämä on virhe, voit hakea muutosta henkilökunnalta %{instance}. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index a5baa17f2..5610272b7 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1181,6 +1181,8 @@ gl: edit: add_keyword: Engadir palabra chave keywords: Palabras chave + statuses: Publicacións individuais + statuses_hint_html: Este filtro aplícase para seleccionar publicacións individuais independentemente de se concordan coas palabras chave aquí indicadas. Podes revisar estas publicacións e eliminalas do filtro premendo aquí. title: Editar filtro errors: deprecated_api_multiple_keywords: Estes parámetros non se poden cambiar desde esta aplicación porque son de aplicación a máis dun filtro de palabras chave. Usa unha aplicación máis recente ou a interface web. @@ -1194,10 +1196,23 @@ gl: keywords: one: "%{count} palabra chave" other: "%{count} palabras chave" + statuses: + one: "%{count} publicación" + other: "%{count} publicacións" + statuses_long: + one: "%{count} publicación individual agochada" + other: "%{count} publicacións individuais agochadas" title: Filtros new: save: Gardar o novo filtro title: Engadir novo filtro + statuses: + back_to_filter: Volver ao filtro + batch: + remove: Eliminar do filtro + index: + hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface Web. + title: Publicacións filtradas footer: developers: Desenvolvedoras more: Máis… diff --git a/config/locales/is.yml b/config/locales/is.yml index 943fff632..db856011b 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1181,6 +1181,8 @@ is: edit: add_keyword: Bæta við stikkorði keywords: Stikkorð + statuses: Einstakar færslur + statuses_hint_html: Þessi sía virkar til að velja stakar færslur burtséð frá því hvort þær samsvari stikkorðunum hér fyrir neðan. Þú getur yfirfarið þessar færslur og fjarlægt þær úr síunni með því að smella hér. title: Breyta síu errors: deprecated_api_multiple_keywords: Þessum viðföngum er ekki hægt að breyta úr þessu forriti, þar sem þau eiga við fleiri en eitt stikkorð síu. Notaðu nýrra forrit eða farðu í vefviðmótið. @@ -1194,10 +1196,23 @@ is: keywords: one: "%{count} stikkorð" other: "%{count} stikkorð" + statuses: + one: "%{count} færsla" + other: "%{count} færslur" + statuses_long: + one: "%{count} stök færsla falin" + other: "%{count} stakar færslur faldar" title: Síur new: save: Vista nýja síu title: Bæta við nýrri síu + statuses: + back_to_filter: Til baka í síu + batch: + remove: Fjarlægja úr síu + index: + hint: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Þú getur bætt fleiri færslum í þessa síu í vefviðmótinu. + title: Síaðar færslur footer: developers: Forritarar more: Meira… diff --git a/config/locales/ko.yml b/config/locales/ko.yml index f290318a6..4788365c2 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1163,6 +1163,8 @@ ko: edit: add_keyword: 키워드 추가 keywords: 키워드 + statuses: 개별 게시물 + statuses_hint_html: 이 필터는 아래 키워드들의 매치 여부와는 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 다음 게시물들을 검토하고 여기를 클릭해 필터에서 제거할 수 있습니다. title: 필터 편집 errors: deprecated_api_multiple_keywords: 이 파라미터들은 하나를 초과하는 필터 키워드에 적용되기 때문에 이 응용프로그램에서 수정될 수 없습니다. 더 최신의 응용프로그램이나 웹 인터페이스를 사용하세요. @@ -1175,10 +1177,21 @@ ko: expires_on: "%{date}에 만료됨" keywords: other: "%{count}개의 키워드" + statuses: + other: "%{count}개의 게시물" + statuses_long: + other: "%{count}개의 개별적인 게시물 숨겨짐" title: 필터 new: save: 새 필터 저장 title: 필터 추가 + statuses: + back_to_filter: 필터로 돌아가기 + batch: + remove: 필터에서 제거 + index: + hint: 이 필터는 다른 기준에 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 웹 인터페이스에서 더 많은 게시물들을 이 필터에 추가할 수 있습니다. + title: 필터링된 게시물 footer: developers: 개발자 more: 더 보기… diff --git a/config/locales/ku.yml b/config/locales/ku.yml index b6b663662..497876c6c 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -19,10 +19,10 @@ ku: continue_to_web: Bo malpera sepanê bidomîne discover_users: Bikarhêneran keşf bike documentation: Pelbend - federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên rajekar û li derveyî mastodonê bişopînî. + federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên ji her kîjan rajekarê mastodonê bişopînî. get_apps: Sepaneke mobîl bicerbîne hosted_on: Mastodon li ser %{domain} tê pêşkêşkirin - instance_actor_flash: 'Ev ajimêr aktorekî aşopî ye ji bo rajekar were temsîl kirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca federasyonê dixebite û divê ney asteng kirin heta ku te xwest hemû nimûneyan asteng bikî, di vir de ger tu blogek navper bikarbînî. + instance_actor_flash: 'Ev ajimêr şanogereke aşopî ye ji bo rajekar were naskirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca giştî dixebite û divê neye astengkirin heya ku te xwest hemû mînakan asteng bikî, di vir de ku tu navpereke astengiyê bi kar bînî. ' learn_more: Bêtir fêr bibe @@ -58,14 +58,14 @@ ku: what_is_mastodon: Mastodon çi ye? accounts: choices_html: 'Hilbijartina %{name}:' - endorsements_hint: Tu dikarî kesên ku di navrûyê wep de dişopînî bipejirînî û ew li vir were nîşan kirin. - featured_tags_hint: Tu dikarî hashtagên teybetî li vir tê nîşan kirin di pê de derxî. + endorsements_hint: Tu dikarî kesên ku di navrûya tevnê de dişopînî bipejirînî û ew ê li vir were nîşankirin. + featured_tags_hint: Tu dikarî hashtagên taybet ên ku wê li vir werin nîşandan bibînî. follow: Bişopîne followers: one: Şopîner other: Şopîner following: Dişopîne - instance_actor_flash: Ev ajimêr listikvaneke rastkî ye ku ji bo wek nûnerê rajekar bixwe tê bikaranîn û ne bikarhênerek kesane. Ew ji bo mebestên yekbûyî tê bikaranîn û divê neyê rawestandin. + instance_actor_flash: Ev ajimêr listikvaneke rastkî ye ku ji bo wek nûnerê rajekar bixwe tê bikaranîn û ne bikarhênerek kesane. Ew ji bo mebestên giştî tê bikaranîn û divê neyê rawestandin. joined: Di %{date} de tevlî bû last_active: çalakiya dawî link_verified_on: Xwedaniya li vê girêdanê di %{date} de hatiye kontrolkirin @@ -73,7 +73,7 @@ ku: moved_html: "%{name} bar kire %{new_profile_link}:" network_hidden: Ev zanyarî berdest nîne nothing_here: Li vir tiştek tune ye! - people_followed_by: Kesên ku%{name} wan dişopîne + people_followed_by: Kesên ku %{name} wan dişopîne people_who_follow: Kesên%{name} dişopîne pin_errors: following: Kesê ku tu dixwazî bipejirînî jixwe tu vê dişopînî @@ -228,7 +228,7 @@ ku: view_domain: Kurte ji bo navperê bide nîşan warn: Hişyarî web: Tevn - whitelisted: Ji bona yekbûyînê maf tê dayîn + whitelisted: Ji bo demnameya giştî maf hate dayin action_logs: action_types: approve_appeal: Îtîrazê bipejirîne @@ -290,7 +290,7 @@ ku: create_account_warning_html: "%{name} ji bo %{target} hişyariyek şand" create_announcement_html: "%{name} agahdarkirineke nû çêkir %{target}" create_custom_emoji_html: "%{name} emojîyeke nû ya %{target} bar kir" - create_domain_allow_html: "%{name} bi navperê %{target} re maf da federeyê" + create_domain_allow_html: "%{name} bi navperê %{target} re maf da demnameya giştî" create_domain_block_html: "%{name} navpera %{target} asteng kir" create_email_domain_block_html: "%{name} e-nameya navperê %{target} asteng kir" create_ip_block_html: "%{name} ji bo IPya %{target} rêzikname saz kir" @@ -298,7 +298,7 @@ ku: demote_user_html: "%{name} bikarhênerê %{target} kaşê jêr kir" destroy_announcement_html: "%{name} daxûyaniyeke %{target} jê bir" destroy_custom_emoji_html: "%{name} emojiya %{target} tune kir" - destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda federeyê" + destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda demnameya giştî" destroy_domain_block_html: "%{name} navpera %{target} asteng kir" destroy_email_domain_block_html: "%{name} astengiya li ser navpera e-nameyê %{target} rakir" destroy_instance_html: "%{name} navpera %{target} asteng kir" @@ -418,10 +418,10 @@ ku: empty: Îtîraz nehatin dîtin. title: Îtîraz domain_allows: - add_new: Maf bide navpera federasyonê - created_msg: Ji bo federasyonê maf dayîna navperê bi serkeftî hate dayîn - destroyed_msg: Ji bo federasyonê maf dayîna navperê nehat dayîn - undo: Maf nede navpera federasyonê + add_new: Mafê bide navpera demnameya giştî + created_msg: Ji bo demnameya giştî mafdayîna navperê bi serkeftî hate dayîn + destroyed_msg: Ji bo demnameya giştî mafdayîna navperê nehat dayîn + undo: Mafê nede navpera demnameya giştî domain_blocks: add_new: Astengkirina navpera nû created_msg: Navpera asteng kirinê nû hat şixulandin @@ -515,7 +515,7 @@ ku: instance_follows_measure: şopînerên wan li vir instance_languages_dimension: Zimanên pir tên bikaranîn instance_media_attachments_measure: pêvekên medyayê tomarkirî - instance_reports_measure: giliyên derbarê wan de + instance_reports_measure: ragehandinên di derbarê wan de instance_statuses_measure: şandiyên tomarkirî delivery: all: Hemû @@ -544,7 +544,7 @@ ku: total_blocked_by_us: Ji aliyê me ve hatiye astengkirin total_followed_by_them: Ji aliyê wan ve hatiye şopandin total_followed_by_us: Ji aliyê me ve hatiye şopandin - total_reported: Giliyên derheqê wan de + total_reported: Ragehandinên di derbarê wan de total_storage: Pêvekên medyayê totals_time_period_hint_html: Tevahiyên ku li jêr têne xuyakirin daneyên hemû deman dihewîne. invites: @@ -575,7 +575,7 @@ ku: relays: add_new: Guhêrkerê nû tevlê bike delete: Jê bibe - description_html: "Guhêrkerê giştî rajekareke navberkar e ku hejmareke mezin ji şandiyan di navbera rajekaran ku jê re dibin endam û weşanê dikin diguherîne. Ew dikare ji rajekarên piçûk û navîn re bibe alîkar ku naveroka ji fendiverse ê bibîne, ku bi rengeke din pêdivî dike ku bikarhênerên herêmî bi desta li dû kesên din ên li rajekarên ji dûr be bişopînin." + description_html: "Guhêrkerê giştî rajekareke navberkar e ku hejmareke mezin ji şandiyan di navbera rajekaran ku jê re dibin endam û weşanê dikin diguherîne. Ew dikare ji rajekarên piçûk û navîn re bibe alîkar ku naveroka ji fediverse ê bibîne, ku bi rengeke din pêdivî dike ku bikarhênerên herêmî bi desta li dû kesên din ên li rajekarên ji dûr be bişopînin." disable: Neçalak bike disabled: Neçalakkirî enable: Çalak bike @@ -585,7 +585,7 @@ ku: pending: Li benda pêjirandina guhêrker e save_and_enable: Tomar û çalak bike setup: Girêdanekê guhêrker saz bike - signatures_not_enabled: Dema ku moda ewle ya jî moda rêzoka spî çalak be guhêrker wê birêkûpêk nexebite + signatures_not_enabled: Dema ku moda ewle yan jî moda demnameya giştî çalak be guhêrker wê birêkûpêk nexebite status: Rewş title: Guhêrker report_notes: @@ -685,11 +685,32 @@ ku: manage_blocks_description: Mafê dide bikarhêneran ku peydakarê e-nameyê û navnîşanên IP asteng bike manage_custom_emojis: Emojiyên kesane bi rêve bibe manage_custom_emojis_description: Mafê dide bikarhêneran ku îmojî kesane bikin li ser vê rajekarê + manage_federation: Demnameya giştî bi rê ve bibe + manage_federation_description: Mafê dide bikarhêneran ku demnameya giştî bi navparên din re asteng bikin û radestkirinê kontrol bikin manage_invites: Vexwendinan bi rêve bibe + manage_invites_description: Mafê dide bikarhêneran ku li girêdanên vexwendinê bigerin û neçalak bikin + manage_reports: Ragihandinan bi rê ve bibe + manage_reports_description: Mafê dide bikarhêneran ku ragihandinan binirxînin û li dijî wan kiryarên çavdêriyê çalakiyan pêk bînin manage_roles: Rolan bi rêve bibe + manage_roles_description: Mafê dide bikarhêneran ku rolên li jêr ên xwe birêve bibin û nîşan bikin manage_rules: Rolan bi rêve bibe + manage_rules_description: Mafê dide bikarhêneran ku rêzikên rajekarê biguherînin manage_settings: Sazkariyan bi rê ve bibe + manage_settings_description: Mafê dide bikarhêneran ku sazkariyên malperê biguherînin + manage_taxonomies: Beşan bi rê ve bibe + manage_taxonomies_description: Mafê dide bikarhêneran ku naveroka rojevê binirxînin û sazkariyên hashtagê rojane bikin + manage_user_access: Gihiştinê bikarhêner bi rê ve bibe + manage_user_access_description: Mafê dide bikarhêneran ku piştrastkirina du-gavî ya bikarhênerên din neçalak bikin, navnîşana e-nameya xwe biguherînin û borînpeyva xwe ji nû ve bikin manage_users: Bikarhêneran bi rêve bibe + manage_users_description: Mafê dide bikarhêneran ku hûrguliyên bikarhênerên din bibînin û li dijî wan kiryarên çavdêriyê çalakiyan pêk bînin + manage_webhooks: Webhook bi rê ve bibe + manage_webhooks_description: Mafê dide bikarhêneran ku ji bo bûyerên rêveberî yên webhook saz bikin + view_audit_log: Têketinên kontrolê nîşan bide + view_audit_log_description: Mafê dide bikarhêneran ku dîroka çalakiyên rêveberî yên li ser rajekarê bibînin + view_dashboard: Destgehê nîşan bide + view_dashboard_description: Mafê dide bikarhêneran ku bigihîjin destgehê û pîvanên cuda + view_devops: Pêşdebir + view_devops_description: Mafê dide bikarhêneran ku bigihîjin destgehên Sidekiq û pgHero title: Rol rules: add_new: Rêbazekê tevlî bike @@ -952,7 +973,7 @@ ku: remove: Girêdana nûçikê rake appearance: advanced_web_interface: Navrûya tevnê yê pêşketî - advanced_web_interface_hint: 'Heke tu bixwazin tevahiya ferehiya dîmendera xwe bi kar bînî, navrûya pêşketî ya tevnê dihêle ku tu gelek stûnên cihêreng saz bikî da ku di heman demê de bi qasî ku tu dixwazî zanyariyan bibînî: Serrûpel, agahdarî, demnameya giştî, her hejmarek ji rêzik û hashtagan.' + advanced_web_interface_hint: 'Ku tu bixwazî tevahiya ferehiya dîmendera xwe bi kar bînî, navrûya pêşketî ya tevnê dihêle ku tu gelek stûnên cihêreng saz bikî da ku di heman demê de bi qasî ku tu dixwazî zanyariyan bibînî: Serrûpel, agahdarî, demnameya giştî, her hejmarek ji rêzik û hashtagan.' animations_and_accessibility: Anîmasyon û gihînî confirmation_dialogs: Gotûbêjên piştrastkirî discovery: Vedîtin @@ -1160,15 +1181,24 @@ ku: public: Demnameya gelemperî thread: Axaftin edit: + add_keyword: Kilîtpeyv tevî bike keywords: Peyvkilît title: Parzûnê serrast bike errors: + deprecated_api_multiple_keywords: Van parameteran ji vê sepanê nayên guhertin ji ber ku ew li ser bêtirî yek kilîtpeyvên parzûnkirî têne sepandin. Sepaneke nûtir an navrûya bikarhêneriyê ya malperê bi kar bîne. invalid_context: Naverok tune ye yan jî nederbasdar tê peydakirin index: + contexts: Parzûnên di %{contexts} de delete: Jê bibe empty: Parzûnên te tune ne. + expires_in: Di %{distance} de diqede + expires_on: Di %{date} de diqede + keywords: + one: "%{count} kilîtpeyv" + other: "%{count} kilîtpeyv" title: Parzûn new: + save: Parzûna nû tomar bike title: Parzûnek nû li zêde bike footer: developers: Pêşdebir @@ -1238,7 +1268,7 @@ ku: password: borînpeyv sign_in_token: koda ewlehiyê bo e-nameyê webauthn: kilîtên ewlehiyê - description_html: Heke çalakiya ku nas nakî dibînî, çêtir dibe ku borînpeyva xwe biguherînî û rastandina du-gavî çalak bikî. + description_html: Çalakiya ku nas nakî dibînî, çêtir dibe ku borînpeyva xwe biguherînî û rastandina du-gavî çalak bikî. empty: Dîroka piştrastkirinê tune ye failed_sign_in_html: Hewldana têketinê ser neket bi%{method} ji %{ip} (%{browser}) de successful_sign_in_html: Bi serkeftî têketin bi %{method} ji %{ip}(%{browser}) çêbû @@ -1707,7 +1737,7 @@ ku: change_password: borînpeyva xwe biguherîne details: 'Li vir hûrgiliyên hewldanên têketinê hene:' explanation: Me têketineke nû ji ajimêra te ji navnîşaneke IP ya nû dît. - further_actions_html: Ku ev ne tu bû, em ji te re pêşniyar dikin ku tu di tavilê de %{action} bikî û piştrastkirina du-gavî çalak bikî da ku ajimêra te di ewlehiyê de bimîne. + further_actions_html: Ku ev ne tu ye, em pêşniyar dikin ku tu di tavilê de %{action} û piştrastkirina du-gavî çalak bikî da ku ajimêra te di ewlehiyê de bimîne. subject: Ajimêra te ji navnîşaneke IP ya nû ve hatiye gihîştin title: Têketineke nû warning: @@ -1753,7 +1783,7 @@ ku: review_preferences_step: Pê bawer be ku vebijêrkên xwe saz bikî, wek mînak kîjan e-nameyên ku tu dixwaziî wergirîne, an tu dixwazî weşanên te ji kîjan astê nehêniyê de kesanekirî bin. Heke nexweşiya te ya tevgerê tune be, tu dikarî hilbijêrî ku GIF ya xweser çalak bibe. subject: Tu bi xêr hatî Mastodon tip_federated_timeline: Demnameya giştî dimenêke gelemperî a Mastodon e. Lê tenê kesên ku ciranên te endamên wê ne dihewîne, ji ber vê yekê ew hemû nîne. - tip_following: Tu rêvebir (ên) rajeker wek berdest dişopînî. Ji bo mirovên balkêştir bibînî, demnameya herêmî û federasyonî kontrol bike. + tip_following: Tu rêvebir (ên) rajeker wek berdest dişopînî. Ji bo mirovên balkêştir bibînî, demnameya herêmî û giştî kontrol bike. tip_local_timeline: Demnameya herêmî, dimenêke bi giştî ye li ser %{instance} e. Ev ciranên te yên herî nêzik in! tip_mobile_webapp: Ger geroka te ya desta pêşkêşî te bike ku tu Mastodon li ser ekrana xwe ya malê lê zêde bikî, tu dikarî agahdariyên push bistînî. Ew bi gelek awayan mîna serîlêdanek xwemalî tevdigere! tips: Serbend diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 9c20a8f8a..f51c231a6 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1221,6 +1221,8 @@ pl: edit: add_keyword: Dodaj słowo kluczowe keywords: Słowa kluczowe + statuses: Pojedyncze wpisy + statuses_hint_html: Ten filtr ma zastosowanie do wybierania poszczególnych postów niezależnie od tego, czy pasują one do słów kluczowych poniżej. Możesz przejrzeć te posty i usunąć je z filtra klikając tutaj. title: Edytuj filtr errors: deprecated_api_multiple_keywords: Te parametry nie mogą zostać zmienione z tej aplikacji, ponieważ dotyczą więcej niż jednego słowa kluczowego. Użyj nowszej wersji aplikacji lub interfejsu internetowego. @@ -1240,6 +1242,13 @@ pl: new: save: Zapisz jako nowy filtr title: Dodaj nowy filtr + statuses: + back_to_filter: Powrót do filtra + batch: + remove: Usuń z filtra + index: + hint: Ten filtr ma zastosowanie do wybierania poszczególnych postów niezależnie od innych kryteriów. Możesz dodać więcej postów do tego filtra z interfejsu WWW. + title: Filtrowane posty footer: developers: Dla programistów more: Więcej… diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index f13624403..cf450f825 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -85,6 +85,7 @@ ca: ip: Introdueix una adreça IPv4 o IPv6. Pots bloquejar rangs complets amb la sintaxi CIDR. Ves a compte no et bloquegis a tu mateix! severities: no_access: Bloqueja l’accés a tots els recursos + sign_up_block: Els nous registres no seran possibles sign_up_requires_approval: Els nous registres requeriran la teva aprovació severity: Tria què passarà amb les sol·licituds des d’aquesta IP rule: @@ -219,6 +220,7 @@ ca: ip: IP severities: no_access: Bloquejar l’accés + sign_up_block: Bloqueja registres sign_up_requires_approval: Limitar els registres severity: Regla notification_emails: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 0c190f1b3..5077e16ff 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -85,6 +85,7 @@ da: ip: Angiv en IPv4- eller IPv6-adresse. Hele intervaller kan blokeres vha. CIDR-syntaksen. Pas på med ikke selv at blive låst ude! severities: no_access: Blokér adgang til alle ressourcer + sign_up_block: Nye tilmeldinger vil ikke være mulige sign_up_requires_approval: Nye tilmeldinger kræver din godkendelse severity: Afgør, hvordan forespørgsler fra denne IP behandles rule: @@ -219,6 +220,7 @@ da: ip: IP severities: no_access: Blokér adgang + sign_up_block: Blokér tilmeldinger sign_up_requires_approval: Begræns tilmeldinger severity: Regel notification_emails: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 4d0cc5118..bbeb610ec 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -85,6 +85,7 @@ de: ip: Gebe eine IPv4- oder IPv6-Adresse an. Du kannst ganze Bereiche mit der CIDR-Syntax blockieren. Achte darauf, dass du dich nicht aussperrst! severities: no_access: Zugriff auf alle Ressourcen blockieren + sign_up_block: Neue Anmeldungen werden nicht möglich sein sign_up_requires_approval: Neue Anmeldungen erfordern deine Zustimmung severity: Wähle aus, was mit Anfragen aus dieser IP passiert rule: @@ -219,6 +220,7 @@ de: ip: IP-Adresse severities: no_access: Zugriff sperren + sign_up_block: Anmeldungen blockieren sign_up_requires_approval: Anmeldungen begrenzen severity: Regel notification_emails: diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 63a68c1c0..9e1464a4f 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -76,6 +76,7 @@ el: ip: Εισάγετε μια διεύθυνση IPv4 ή IPv6. Μπορείτε να αποκλείσετε ολόκληρο το εύρος χρησιμοποιώντας τη σύνταξη CIDR. Προσέξτε να μην κλειδώσετε τον εαυτό σας! severities: no_access: Αποκλεισμός πρόσβασης σε όλους τους πόρους + sign_up_block: Νέες εγγραφές δεν θα είναι δυνατές sign_up_requires_approval: Νέες εγγραφές θα απαιτούν την έγκριση σας severity: Επιλέξτε τι θα γίνεται με αιτήσεις από αυτήν την διεύθυνση IP rule: @@ -198,6 +199,7 @@ el: ip: Διεύθυνση IP severities: no_access: Αποκλεισμός πρόσβασης + sign_up_block: Αποκλεισμός εγγραφών sign_up_requires_approval: Περιορισμός εγγραφών severity: Κανόνας notification_emails: diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index d61666834..53b25da8e 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -85,6 +85,7 @@ es-AR: ip: Ingresá una dirección IPv4 ó IPv6. Podés bloquear rangos completos usando la sintaxis CIDR. ¡Tené cuidado de no bloquearte vos mismo! severities: no_access: Bloquear acceso a todos los recursos + sign_up_block: Los nuevos registros se deshabilitarán sign_up_requires_approval: Los nuevos registros requerirán tu aprobación severity: Elegí lo que pasará con las solicitudes desde esta dirección IP rule: @@ -219,6 +220,7 @@ es-AR: ip: Dirección IP severities: no_access: Bloquear acceso + sign_up_block: Bloquear registros sign_up_requires_approval: Limitar registros severity: Regla notification_emails: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index cd390493c..25efe37cd 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -85,6 +85,7 @@ es: ip: Introduzca una dirección IPv4 o IPv6. Puede bloquear rangos completos usando la sintaxis CIDR. ¡Tenga cuidado de no quedarse fuera! severities: no_access: Bloquear acceso a todos los recursos + sign_up_block: Los nuevos registros se deshabilitarán sign_up_requires_approval: Nuevos registros requerirán su aprobación severity: Elegir lo que pasará con las peticiones desde esta IP rule: @@ -219,6 +220,7 @@ es: ip: IP severities: no_access: Bloquear acceso + sign_up_block: Bloquear registros sign_up_requires_approval: Limitar registros severity: Regla notification_emails: diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 8962f0b5d..189f51ab6 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -37,6 +37,7 @@ fi: current_password: Turvallisuussyistä kirjoita nykyisen tilin salasana current_username: Vahvista kirjoittamalla nykyisen tilin käyttäjätunnus digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana + discoverable: Salli tuntemattomien löytää tilisi suositusten, trendien ja muiden ominaisuuksien kautta email: Sinulle lähetetään vahvistussähköposti fields: Sinulla voi olla korkeintaan 4 asiaa profiilissasi taulukossa header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px @@ -48,6 +49,7 @@ fi: phrase: Täytetään riippumatta julkaisun kirjainkoon tai sisällön varoituksesta scopes: Mihin sovellusliittymiin sovellus pääsee käsiksi. Jos valitset ylätason laajuuden, sinun ei tarvitse valita yksittäisiä. setting_aggregate_reblogs: Älä näytä uusia tehosteita viesteille, joita on äskettäin tehostettu (koskee vain äskettäin saatuja tehosteita) + setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät aktiivisesti Mastodonia setting_default_sensitive: Arkaluontoinen media on oletuksena piilotettu ja se voidaan näyttää yhdellä napsautuksella setting_display_media_default: Piilota arkaluonteiseksi merkitty media setting_display_media_hide_all: Piilota aina kaikki media @@ -66,6 +68,11 @@ fi: with_dns_records: Annetun verkkotunnuksen DNS-tietueet yritetään ratkaista ja tulokset myös estetään featured_tag: name: 'Voit halutessasi käyttää jotakin näistä:' + filters: + action: Valitse, mikä toiminto suoritetaan, kun viesti vastaa suodatinta + actions: + hide: Piilota suodatettu sisältö kokonaan ja käyttäydy ikään kuin sitä ei olisi olemassa + warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen otsikko form_challenge: current_password: Olet menossa suojatulle alueelle imports: @@ -89,6 +96,13 @@ fi: name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi user: chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla + role: Rooli määrää, mitkä käyttöoikeudet käyttäjällä on + user_role: + color: Väri, jota käytetään roolin koko käyttöliittymässä, RGB heksamuodossa + highlighted: Tämä tekee roolista julkisesti näkyvän + name: Roolin julkinen nimi, jos rooli on asetettu näytettäväksi mekkinä + permissions_as_keys: Käyttäjillä, joilla on tämä rooli, on käyttöoikeus... + position: Korkeampi rooli ratkaisee konfliktit tietyissä tilanteissa. Tiettyjä toimintoja voidaan suorittaa vain rooleille, joiden prioriteetti on pienempi webhook: events: Valitse lähetettävät tapahtumat url: Mihin tapahtumat lähetetään diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 0727fb97f..a9d801409 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -85,6 +85,7 @@ gl: ip: Escribe un enderezo IPv4 ou IPv6. Podes bloquear rangos completos usando a sintaxe CIDR. Ten coidado e non te bloquees a ti mesma! severities: no_access: Bloquear acceso a tódolos recursos + sign_up_block: Non se poderán rexistrar novas contas sign_up_requires_approval: Os novos rexistros requerirán a túa aprobación severity: Escolle que acontecerá coas peticións desde este IP rule: @@ -219,6 +220,7 @@ gl: ip: IP severities: no_access: Bloquear acceso + sign_up_block: Bloquear novos rexistros sign_up_requires_approval: Limitar o rexistro severity: Regra notification_emails: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index d0ae814e6..df19f4aa7 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -85,6 +85,7 @@ hu: ip: Írj be egy IPv4 vagy IPv6 címet. A CIDR formátum használatával teljes tartományokat tilthatsz ki. Légy óvatos, hogy magadat véletlenül se zárd ki! severities: no_access: Elérés tiltása minden erőforráshoz + sign_up_block: Új feliratkozások nem lesznek lehetségesek sign_up_requires_approval: Új regisztrációk csak a jóváhagyásoddal történhetnek majd meg severity: Válaszd ki, mi történjen a kérésekkel erről az IP-ről rule: @@ -219,6 +220,7 @@ hu: ip: IP severities: no_access: Elérés letiltása + sign_up_block: Feliratkozások letiltása sign_up_requires_approval: Regisztrációk korlátozása severity: Szabály notification_emails: diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index facef6f18..60cbb3341 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -85,6 +85,7 @@ is: ip: Settu inn IPv4 eða IPv6 vistfang. Þú getur lokað á svið vistfanga með því að nota CIDR-framsetningu. Gættu þess að loka ekki sjálfa/n þig úti! severities: no_access: Loka á aðgang að öllum tilföngum + sign_up_block: Nýskráningar verða ekki mögulegar sign_up_requires_approval: Nýskráningar munu þurfa samþykki þitt severity: Veldu hvað munir gerast við beiðnir frá þessu IP-vistfangi rule: @@ -219,6 +220,7 @@ is: ip: IP-vistfang severities: no_access: Loka á aðgang + sign_up_block: Loka á nýskráningar sign_up_requires_approval: Takmarka nýskráningar severity: Regla notification_emails: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index d2ffda888..50a4caae9 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -85,6 +85,7 @@ it: ip: Inserisci un indirizzo IPv4 o IPv6. Puoi bloccare interi intervalli usando la sintassi CIDR. Fai attenzione a non bloccare te stesso! severities: no_access: Blocca l'accesso a tutte le risorse + sign_up_block: Le nuove iscrizioni non saranno possibili sign_up_requires_approval: Le nuove iscrizioni richiederanno la tua approvazione severity: Scegli cosa accadrà con le richieste da questo IP rule: @@ -219,6 +220,7 @@ it: ip: IP severities: no_access: Blocca accesso + sign_up_block: Blocca iscrizioni sign_up_requires_approval: Limita iscrizioni severity: Regola notification_emails: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 79c28b4fc..5469a7c04 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -85,6 +85,7 @@ ko: ip: IPv4 또는 IPv6 주소를 입력하세요. CIDR 문법을 사용해서 모든 범위를 차단할 수도 있습니다. 자기 자신을 잠가버리지 않도록 주의하세요! severities: no_access: 모든 자원에 대한 접근 차단 + sign_up_block: 새 가입이 불가능하게 됩니다 sign_up_requires_approval: 새 가입이 승인을 필요로 하도록 합니다 severity: 해당 IP로부터의 요청에 대해 무엇이 일어나게 할 지 고르세요 rule: @@ -219,6 +220,7 @@ ko: ip: IP severities: no_access: 접근 차단 + sign_up_block: 가입 차단 sign_up_requires_approval: 가입 제한 severity: 규칙 notification_emails: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index ea6db0972..d08b4bf05 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -70,6 +70,11 @@ ku: with_dns_records: Hewl tê dayîn ku tomarên DNSê yên li qada jê re hatine dayîn were çareserkirin û encamên wê jî were astengkirin featured_tag: name: 'Belkî tu yekê bi kar bînî çi van:' + filters: + action: Hilbijêre ku dema şandiyek bi parzûnê re lihevhatî be bila kîjan çalakî were pêkanîn + actions: + hide: Naveroka parzûnkirî bi tevahî veşêre, mîna ku ew tune be tevbigere + warn: Naveroka parzûnkirî li pişt hişyariyek ku sernavê parzûnê qal dike veşêre form_challenge: current_password: Tu dikevî qadeke ewledar imports: @@ -82,6 +87,7 @@ ku: ip: Têkeve navnîşana IPv4 an jî IPv6'yek. Tu dikarî bi hevoksazî ya CIDR re hemî valahîyan asteng bikî. Hay ji xwe hebe ku xwe derve nehêle! severities: no_access: Gihîştina hemî çavkaniyan asteng bike + sign_up_block: Tomarkirinên nû wê ne pêkan bin sign_up_requires_approval: Tomarkirinên nû de pejirandina te pêwîste severity: Daxwazên ku ji vê IPyê tên dê çi bibe hilbijêre rule: @@ -93,7 +99,12 @@ ku: name: Tîpan, mînak ji bo ku bêhtir paknivîs bibe, tenê rewşa tîpên girdek/hûrdek dikarî biguherînî user: chosen_languages: Dema were nîşankirin, tenê parvekirinên bi zimanên hilbijartî dê di rêzikên giştî de werin nîşandan + role: Rola kîjan mafdayînên bikarhêner heye kontrol dike user_role: + color: Renga ku were bikaranîn ji bo rola li seranserê navrûya bikarhêneriyê, wekî RGB di forma hex + highlighted: Ev rola xwe ji raya giştî re xuya dike + name: Navê giştî yê rolê, ku rol wekî nîşanekê were nîşankirin + permissions_as_keys: Bikarhênerên bi vê rolê wê bigihîjin... position: Rola bilind di hinek rewşan de biryara çareserkirina nakokiyan dide. Hinej çalakî tenê dikarin li ser rolên bi pêşanînek kêmtir bêne kirin webhook: events: Bûyeran hilbijêre bo şandinê @@ -185,6 +196,7 @@ ku: setting_use_pending_items: Awayê hêdî severity: Asta girîngiyê sign_in_token_attempt: Koda ewlehiyê + title: Sernav type: Cureya têxistinê username: Navê bikarhêneriyê username_or_email: Navê bikarhêner an jî e-name @@ -193,6 +205,10 @@ ku: with_dns_records: Tomarên MX û IP yên hundirê navper lê zêde bike featured_tag: name: Hashtag + filters: + actions: + hide: Bi tevahî veşêre + warn: Bi hişyariyekê veşêre interactions: must_be_follower: Danezanên ji kesên ku ne şopînerên min tên asteng bike must_be_following: Agahdariyan asteng bike ji kesên ku tu wan naşopînî @@ -206,6 +222,7 @@ ku: ip: IP severities: no_access: Gihîştinê asteng bike + sign_up_block: Tomarkirinan asteng bike sign_up_requires_approval: Tomaran sînordar bike severity: Rêbaz notification_emails: @@ -229,6 +246,8 @@ ku: user: role: Rol user_role: + color: Rengê nîşanê + highlighted: Li ser profîlên bikarhêner rola wekî nîşan bide nîşankirin name: Nav permissions_as_keys: Maf position: Pêşikî diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index ad8f3bd4d..d73da1c2a 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -85,6 +85,7 @@ lv: ip: Ievadi IPv4 vai IPv6 adresi. Izmantojot CIDR sintaksi, tu vari bloķēt visus diapazonus. Esi piesardzīgs un neizslēdz pats sevi! severities: no_access: Bloķēt piekļuvi visiem resursiem + sign_up_block: Jaunas pieteikšanās nebūs iespējamas sign_up_requires_approval: Jaunām reģistrācijām būs nepieciešams tavs apstiprinājums severity: Izvēlies, kas notiks ar pieprasījumiem no šīs IP adreses rule: @@ -219,6 +220,7 @@ lv: ip: IP severities: no_access: Bloķēt piekļuvi + sign_up_block: Bloķēt pieteikšanās sign_up_requires_approval: Ierobežot reģistrēšanos severity: Noteikumi notification_emails: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index e77457f94..ab6c2e3ff 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -85,6 +85,7 @@ pt-PT: ip: Introduza um endereço IPv4 ou IPv6. Pode bloquear intervalos inteiros usando a sintaxe CIDR. Tenha cuidado para não se bloquear a sí mesmo! severities: no_access: Bloquear o acesso a todos os recursos + sign_up_block: Não serão possíveis novas inscrições sign_up_requires_approval: Novas inscrições requererão a sua aprovação severity: Escolha o que acontecerá com as solicitações deste IP rule: @@ -219,6 +220,7 @@ pt-PT: ip: IP severities: no_access: Bloquear acesso + sign_up_block: Bloquear inscrições sign_up_requires_approval: Limitar inscrições severity: Regra notification_emails: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index b144b29d5..8f897c917 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -85,6 +85,7 @@ ru: ip: Введите IPv4 или IPv6 адрес. Вы можете блокировать целые диапазоны, используя синтаксис CIDR. Будьте осторожны, не заблокируйте самого себя! severities: no_access: Заблокировать доступ ко всем ресурсам + sign_up_block: Новые регистрации будут невозможны sign_up_requires_approval: Новые регистрации потребуют вашего одобрения severity: Выберите, что будет происходить с запросами с этого IP rule: @@ -219,6 +220,7 @@ ru: ip: IP severities: no_access: Блокировать доступ + sign_up_block: Заблокировать регистрацию sign_up_requires_approval: Ограничить регистрации severity: Правило notification_emails: diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 640d2c27e..854670fe5 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -85,6 +85,7 @@ sl: ip: Vnesite naslov IPv4 oz. IPv6. S skladnjo CIDR lahko blokirate celotne obsege. Pazite, da se ne zaklenete ven! severities: no_access: Blokiraj dostop do vseh virov + sign_up_block: Nove registracije ne bodo možne sign_up_requires_approval: Za nove registracije bo potrebna vaša odobritev severity: Izberite, kaj se bo zgodilo z zahtevami iz tega IP-naslova rule: @@ -219,6 +220,7 @@ sl: ip: IP severities: no_access: Blokiraj dostop + sign_up_block: Blokiraj registracije sign_up_requires_approval: Omeji število prijav severity: Pravilo notification_emails: diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index c311eb189..a90c3bce9 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -60,6 +60,7 @@ sv: ip: Ange en IPv4 eller IPv6-adress. Du kan blockera hela intervall med hjälp av CIDR-syntax. Var försiktig så att du inte låser ut dig själv! severities: no_access: Blockera åtkomst till alla resurser + sign_up_block: Nya registreringar inte möjligt sign_up_requires_approval: Nya registreringar kräver ditt godkännande severity: Välj vad som ska hända med förfrågningar från denna IP rule: @@ -176,6 +177,7 @@ sv: ip: IP severities: no_access: Blockera åtkomst + sign_up_block: Blockera registreringar sign_up_requires_approval: Begränsa registreringar severity: Regel notification_emails: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 2a31ea9c2..8a23d1f6b 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -85,6 +85,7 @@ th: ip: ป้อนที่อยู่ IPv4 หรือ IPv6 คุณสามารถปิดกั้นทั้งช่วงได้โดยใช้ไวยากรณ์ CIDR ระวังอย่าล็อคตัวคุณเองออก! severities: no_access: ปิดกั้นการเข้าถึงทรัพยากรทั้งหมด + sign_up_block: จะไม่สามารถทำการลงทะเบียนใหม่ sign_up_requires_approval: การลงทะเบียนใหม่จะต้องมีการอนุมัติของคุณ severity: เลือกสิ่งที่จะเกิดขึ้นกับคำขอจาก IP นี้ rule: @@ -219,6 +220,7 @@ th: ip: IP severities: no_access: ปิดกั้นการเข้าถึง + sign_up_block: ปิดกั้นการลงทะเบียน sign_up_requires_approval: จำกัดการลงทะเบียน severity: กฎ notification_emails: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index f2e728d2a..f63ad13aa 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -85,6 +85,7 @@ tr: ip: Bir IPv4 veya IPv6 adresi girin. CIDR sözdizimini kullanarak tüm aralıkları engelleyebilirsiniz. Kendinizi dışarıda bırakmamaya dikkat edin! severities: no_access: Tüm kaynaklara erişimi engelle + sign_up_block: Yeni kayıtlar mümkün olmayacaktır sign_up_requires_approval: Yeni kayıt onayınızı gerektirir severity: Bu IP'den gelen isteklere ne olacağını seçin rule: @@ -219,6 +220,7 @@ tr: ip: IP severities: no_access: Erişimi engelle + sign_up_block: Kayıt olmayı engelle sign_up_requires_approval: Kayıtları sınırla severity: Kural notification_emails: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index ec43655e4..df9f1fb4d 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -85,6 +85,7 @@ uk: ip: Введіть адресу IPv4 або IPv6. Ви можете блокувати цілі діапазони, використовуючи синтаксис CIDR. Будьте обережні, щоб не заблокувати себе! severities: no_access: Заблокувати доступ до всіх ресурсів + sign_up_block: Нові реєстрації будуть неможливі sign_up_requires_approval: Нові реєстрації потребуватимуть затвердження вами severity: Виберіть, що буде відбуватися з запитами з цієї IP rule: @@ -219,6 +220,7 @@ uk: ip: IP severities: no_access: Заборонити доступ + sign_up_block: Блокувати реєстрацію sign_up_requires_approval: Обмеження реєстрації severity: Правило notification_emails: diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 7bc43a0b0..143064c5d 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -85,6 +85,7 @@ vi: ip: Nhập một địa chỉ IPv4 hoặc IPv6. Bạn cũng có thể chặn toàn bộ dãy IP bằng cú pháp CIDR. Hãy cẩn thận đừng chặn nhầm toàn bộ! severities: no_access: Chặn truy cập từ tất cả IP này + sign_up_block: Không chấp nhận đăng ký mới sign_up_requires_approval: Bạn sẽ phê duyệt những đăng ký mới từ IP này severity: Chọn hành động nếu nhận được yêu cầu từ IP này rule: @@ -219,6 +220,7 @@ vi: ip: IP severities: no_access: Chặn truy cập + sign_up_block: Chặn đăng ký sign_up_requires_approval: Giới hạn đăng ký severity: Mức độ notification_emails: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 703c200c9..0c3c28c67 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -85,6 +85,7 @@ zh-CN: ip: 输入 IPv4 或 IPv6 地址。你可以使用 CIDR 语法屏蔽 IP 段。小心不要屏蔽自己! severities: no_access: 阻止访问所有资源 + sign_up_block: 无法进行新的账号注册 sign_up_requires_approval: 新注册需要你的批准 severity: 选择如何处理来自此 IP 的请求。 rule: @@ -219,6 +220,7 @@ zh-CN: ip: IP 地址 severities: no_access: 阻止访问 + sign_up_block: 阻止账号注册 sign_up_requires_approval: 限制注册 severity: 规则 notification_emails: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index a3e29b374..3691af892 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -85,6 +85,7 @@ zh-TW: ip: 請輸入 IPv4 或 IPv6 位址,亦可以用 CIDR 語法以封鎖整個 IP 區段。小心不要把自己給一併封鎖掉囉! severities: no_access: 封鎖對所有資源存取 + sign_up_block: 無法註冊新帳號 sign_up_requires_approval: 新註冊申請需要先經過您的審核 severity: 請選擇將如何處理來自這個 IP 位址的請求 rule: @@ -219,6 +220,7 @@ zh-TW: ip: IP 位址 severities: no_access: 封鎖 + sign_up_block: 禁止註冊新帳號 sign_up_requires_approval: 限制註冊 severity: 規則 notification_emails: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index e4c510308..ea7b8e6ba 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1221,6 +1221,8 @@ sl: edit: add_keyword: Dodaj ključno besedo keywords: Ključne besede + statuses: Posamezne objave + statuses_hint_html: Ta filter se nanaša na posamezne objave ne glede na to, ali se ujemajo s spodnjimi ključnimi besedami. Te objave lahko pregledate in jih odstranite iz filtra, če kliknete tukaj. title: Uredite filter errors: deprecated_api_multiple_keywords: Teh parametrov ni mogoče spremeniti iz tega programa, ker veljajo za več kot eno ključno besedo filtra. Uporabite novejšo izdaj programa ali spletni vmesnik. @@ -1236,10 +1238,27 @@ sl: one: "%{count} ključna beseda" other: "%{count} ključnih besed" two: "%{count} ključni besedi" + statuses: + few: "%{count} objave" + one: "%{count} objava" + other: "%{count} objav" + two: "%{count} objavi" + statuses_long: + few: "%{count} posamezne objave skrite" + one: "%{count} posamezna objava skrita" + other: "%{count} posameznih objav skritih" + two: "%{count} posamezni objavi skriti" title: Filtri new: save: Shrani nov filter title: Dodaj nov filter + statuses: + back_to_filter: Nazaj na filter + batch: + remove: Odstrani iz filtra + index: + hint: Ta filter se nanaša na posamezne objave ne glede na druge pogoje. Filtru lahko dodate več objav prek spletnega vmesnika. + title: Filtrirane objave footer: developers: Razvijalci more: Več… diff --git a/config/locales/th.yml b/config/locales/th.yml index ef5e5e38e..7f3c25ff1 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -653,6 +653,7 @@ th: manage_announcements: จัดการประกาศ manage_announcements_description: อนุญาตให้ผู้ใช้จัดการประกาศในเซิร์ฟเวอร์ manage_appeals: จัดการการอุทธรณ์ + manage_appeals_description: อนุญาตให้ผู้ใช้ตรวจทานการอุทธรณ์ต่อการกระทำการควบคุม manage_blocks: จัดการการปิดกั้น manage_blocks_description: อนุญาตให้ผู้ใช้ปิดกั้นผู้ให้บริการอีเมลและที่อยู่ IP manage_custom_emojis: จัดการอีโมจิที่กำหนดเอง @@ -827,6 +828,7 @@ th: allow_account: อนุญาตผู้สร้าง disallow: ไม่อนุญาตโพสต์ disallow_account: ไม่อนุญาตผู้สร้าง + not_discoverable: ผู้สร้างไม่ได้เลือกรับให้สามารถค้นพบได้ shared_by: other: แบ่งปันและชื่นชอบ %{friendly_count} ครั้ง title: โพสต์ที่กำลังนิยม @@ -992,6 +994,7 @@ th: title: ติดตาม %{acct} challenge: confirm: ดำเนินการต่อ + hint_html: "เคล็ดลับ: เราจะไม่ถามรหัสผ่านของคุณกับคุณสำหรับชั่วโมงถัดไป" invalid_password: รหัสผ่านไม่ถูกต้อง prompt: ยืนยันรหัสผ่านเพื่อดำเนินการต่อ crypto: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index bc2b730f8..2706070a3 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -79,7 +79,7 @@ tr: following: Onaylamak istediğiniz kişiyi zaten takip ediyor olmalısınız posts: one: Gönderi - other: Toot + other: Gönderiler posts_tab_heading: Tootlar posts_with_replies: Tootlar ve yanıtlar roles: @@ -1181,6 +1181,8 @@ tr: edit: add_keyword: Anahtar sözcük ekle keywords: Anahtar Sözcükler + statuses: Tekil gönderiler + statuses_hint_html: Bu filtre aşağıdaki anahtar kelimelere eşlenip eşlenmediklerinden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Bu gönderileri gözden geçirip, buraya tıklayarak filtreden kaldırabilirsiniz. title: Filtreyi düzenle errors: deprecated_api_multiple_keywords: Bu parametreler, birden fazla filtre anahtar sözcüğü için geçerli olduğundan dolayı bu uygulama içerisinden değiştirilemezler. Daha yeni bir uygulama veya web arayüzünü kullanın. @@ -1194,10 +1196,23 @@ tr: keywords: one: "%{count} anahtar sözcük" other: "%{count} anahtar sözcük" + statuses: + one: "%{count} gönderi" + other: "%{count} gönderi" + statuses_long: + one: "%{count} tekil gönderi gizli" + other: "%{count} tekil gönderi gizli" title: Filtreler new: save: Yeni filtre kaydet title: Yeni filtre ekle + statuses: + back_to_filter: Filtreye dön + batch: + remove: Filtreden kaldır + index: + hint: Bu filtre diğer ölçütlerden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Web arayüzünü kullanarak bu filtreye daha fazla gönderi ekleyebilirsiniz. + title: Filtrelenmiş gönderiler footer: developers: Geliştiriciler more: Daha Fazla… diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 708ce998e..c1ca26c52 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -513,6 +513,7 @@ uk: confirm_purge: Ви впевнені, що хочете видалити ці дані з цього домену? content_policies: comment: Внутрішня примітка + description_html: Ви можете визначити правила вмісту що буде застосовано до всіх облікових записів із цього домену та будь-якого з його піддоменів. policies: reject_media: Відхилити медіа reject_reports: Відхилити скарги @@ -617,7 +618,10 @@ uk: action_log: Журнал подій action_taken_by: Дія виконана actions: + delete_description_html: Дописи, на які скаржилися будуть видалені, а попередження буде записано, щоб допомогти вам підвищити рівень майбутніх порушень того самого облікового запису. + mark_as_sensitive_description_html: Медіа у дописах, на які скаржилися будуть позначені делікатними, а попередження буде записано, щоб допомогти вам підвищити рівень майбутніх порушень того самого облікового запису. other_description_html: Більше опцій керування поведінкою облікового запису і налаштування комунікації з обліковим записом, на який поскаржилися. + resolve_description_html: Не буде застосовано жодних дій проти облікового запису, на який скаржилися, не буде записано попередження, а скаргу буде закрито. silence_description_html: Профіль буде видимий лише тим, хто вже стежить за ним або знайде його самостійно, сильно обмежуючи його знаходження. Можна потім скасувати. suspend_description_html: Профіль і весь його вміст буде недоступним, поки його не буде видалено. Взаємодія з обліковим записом буде неможливою. add_to_report: Додати ще подробиць до скарги @@ -892,6 +896,7 @@ uk: allow_account: Дозволити автора disallow: Заборонити допис disallow_account: Заборонити автора + not_discoverable: Автор не вирішив бути видимим title: Популярні дописи tags: current_score: Поточний результат %{score} @@ -967,14 +972,18 @@ uk: body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target} subject: Нова скарга до %{instance} (#%{id}) new_trends: + body: 'Ці елементи потребують розгляду перед оприлюдненням:' new_trending_links: no_approved_links: На цей час немає схвалених популярних посилань. + requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного посилання, яке зараз на «%{lowest_link_title}» з рейтингом %{lowest_link_score}.' title: Популярні посилання new_trending_statuses: no_approved_statuses: На цей час немає схвалених популярних дописів. + requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного допису, який зараз на %{lowest_status_url} з рейтингом %{lowest_status_score}.' title: Популярні дописи new_trending_tags: no_approved_tags: На цей час немає схвалених популярних хештегів. + requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного хештеґу, який зараз на #%{lowest_tag_name} з рейтингом %{lowest_tag_score}.' title: Популярні хештеги subject: Нове популярне до розгляду на %{instance} aliases: @@ -1129,6 +1138,7 @@ uk: approve_appeal: Схвалити апеляцію associated_report: Пов'язана скарга created_at: Застарілі + description_html: Це дії, виконані проти вашого облікового запису та попереджень, які були відправлені вам персоналом %{instance}. recipient: Адресант reject_appeal: Відхилити апеляцію status: 'Допис #%{id}' @@ -1356,7 +1366,7 @@ uk: title: Поки ви були відсутні... favourite: body: 'Ваш статус подобається %{name}:' - subject: Користувачу %{name} сподобався ваш статус + subject: Ваш статус сподобався %{name} title: Нове вподобання follow: body: "%{name} тепер підписаний(-а) на вас!" diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 743d9b608..625d3a07e 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1159,6 +1159,7 @@ vi: edit: add_keyword: Thêm từ khoá keywords: Từ khóa + statuses: Những tút riêng lẻ title: Chỉnh sửa bộ lọc errors: deprecated_api_multiple_keywords: Không thể thay đổi các tham số này từ ứng dụng này vì chúng áp dụng cho nhiều hơn một từ khóa bộ lọc. Sử dụng ứng dụng mới hơn hoặc giao diện web. @@ -1171,10 +1172,18 @@ vi: expires_on: Hết hạn vào %{date} keywords: other: "%{count} từ khóa" + statuses: + other: "%{count} tút" title: Bộ lọc new: save: Lưu thành bộ lọc mới title: Thêm bộ lọc mới + statuses: + back_to_filter: Quay về bộ lọc + batch: + remove: Xóa khỏi bộ lọc + index: + title: Những tút đã lọc footer: developers: Phát triển more: Nhiều hơn diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 0bf1833f2..1a71554bb 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1161,6 +1161,8 @@ zh-CN: edit: add_keyword: 添加关键词 keywords: 关键词 + statuses: 个别嘟文 + statuses_hint_html: 无论是否匹配下列关键词,此过滤器适用于选用个别嘟文。你可以点击此处来审核这些嘟文,并从过滤器中移除。 title: 编辑过滤器 errors: deprecated_api_multiple_keywords: 这些参数不能从此应用程序更改,因为它们应用于一个以上的过滤关键字。 使用较新的应用程序或网页界面。 @@ -1173,10 +1175,21 @@ zh-CN: expires_on: "%{date} 后到期" keywords: other: "%{count} 关键词" + statuses: + other: "%{count} 条嘟文" + statuses_long: + other: "%{count} 条个别嘟文已隐藏" title: 过滤器 new: save: 保存新过滤器 title: 添加新的过滤器 + statuses: + back_to_filter: 返回至过滤器 + batch: + remove: 从过滤器中移除 + index: + hint: 无论其他条件如何,此过滤器适用于选用个别嘟文。你可以从网页界面中向此过滤器加入更多嘟文。 + title: 过滤的嘟文 footer: developers: 开发者 more: 更多… diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 1490aeef1..c055ba69f 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1163,6 +1163,8 @@ zh-TW: edit: add_keyword: 新增關鍵字 keywords: 關鍵字 + statuses: 各別嘟文 + statuses_hint_html: 此過濾器會套用至所選之各別嘟文,不管它們有無匹配到以下的關鍵字。您可以檢視這些嘟文而按此將它們從過濾器中移除。 title: 編輯篩選條件 errors: deprecated_api_multiple_keywords: 這些參數無法從此應用程式中更改,因為它們適用於一或多個過濾器關鍵字。請使用較新的應用程式或是網頁介面。 @@ -1175,10 +1177,21 @@ zh-TW: expires_on: 於 %{date} 過期 keywords: other: "%{count} 個關鍵字" + statuses: + other: "%{count} 則嘟文" + statuses_long: + other: "%{count} 則各別嘟文被隱藏" title: 過濾器 new: save: 儲存新過濾器 title: 新增篩選器 + statuses: + back_to_filter: 回到過濾器 + batch: + remove: 從過濾器中移除 + index: + hint: 此過濾器會套用至所選之各別嘟文,不管它們有無符合其他條件。您可以從網頁介面中將更多嘟文加入至此過濾器。 + title: 已過濾之嘟文 footer: developers: 開發者 more: 更多...... From 63adef2021b05f282c5a0c6ba25f99e093620e88 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 17:36:01 +0200 Subject: [PATCH 095/280] Change wording of a few filter-related strings (#19050) Follow-up on #18945 addressing review comments --- config/locales/en.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 596cc1a28..e495ef841 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1182,7 +1182,7 @@ en: add_keyword: Add keyword keywords: Keywords statuses: Individual posts - statuses_hint_html: This filter applies to select individual posts regardless of whether they match the keywords below. You can review these posts and remove them from the filter by clicking here. + statuses_hint_html: This filter applies to select individual posts regardless of whether they match the keywords below. Review or remove posts from the filter. title: Edit filter errors: deprecated_api_multiple_keywords: These parameters cannot be changed from this application because they apply to more than one filter keyword. Use a more recent application or the web interface. @@ -1211,7 +1211,7 @@ en: batch: remove: Remove from filter index: - hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the Web interface. + hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the web interface. title: Filtered posts footer: developers: Developers From 2cae5f5b8d4d0702fe9835a0ce2782f238755d0c Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 17:36:35 +0200 Subject: [PATCH 096/280] =?UTF-8?q?Fix=20=E2=80=9CFilter=20this=20post?= =?UTF-8?q?=E2=80=9D=20potentially=20listing=20deleted=20filters=20(#19051?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/javascript/mastodon/reducers/filters.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/reducers/filters.js b/app/javascript/mastodon/reducers/filters.js index cc1d3349c..f4f97cd3a 100644 --- a/app/javascript/mastodon/reducers/filters.js +++ b/app/javascript/mastodon/reducers/filters.js @@ -35,7 +35,7 @@ export default function filters(state = ImmutableMap(), action) { case FILTERS_CREATE_SUCCESS: return normalizeFilter(state, action.filter); case FILTERS_FETCH_SUCCESS: - //TODO: handle deleting obsolete filters + return normalizeFilters(ImmutableMap(), action.filters); case FILTERS_IMPORT: return normalizeFilters(state, action.filters); default: From 55bef1e34fc3b07ed7f762d565a161e74e128016 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 17:36:54 +0200 Subject: [PATCH 097/280] Fix quickly switching notification filters resulting in empty or incorrect list (#19052) Follow-up to #18960 The aforementioned PR fixed an issue in which switching notification filters while notifications were loading prevented the query for the new filter from running, but another issue remained: if the first query completed after the second one, its results would override the second one, thus leading to the same issue. This commit cancels the first request if it is still running, before issuing the second one. --- .../mastodon/actions/notifications.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 7f62e6c04..d4588db2c 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -141,15 +141,22 @@ const excludeTypesFromFilter = filter => { const noOp = () => {}; +let expandNotificationsController = new AbortController(); + export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { return (dispatch, getState) => { const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); const notifications = getState().get('notifications'); const isLoadingMore = !!maxId; - if (notifications.get('isLoading') && !forceLoad) { - done(); - return; + if (notifications.get('isLoading')) { + if (forceLoad) { + expandNotificationsController.abort(); + expandNotificationsController = new AbortController(); + } else { + done(); + return; + } } const params = { @@ -174,7 +181,7 @@ export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { dispatch(expandNotificationsRequest(isLoadingMore)); - api(getState).get('/api/v1/notifications', { params }).then(response => { + api(getState).get('/api/v1/notifications', { params, signal: expandNotificationsController.signal }).then(response => { const next = getLinks(response).refs.find(link => link.rel === 'next'); dispatch(importFetchedAccounts(response.data.map(item => item.account))); @@ -215,7 +222,7 @@ export function expandNotificationsFail(error, isLoadingMore) { type: NOTIFICATIONS_EXPAND_FAIL, error, skipLoading: !isLoadingMore, - skipAlert: !isLoadingMore, + skipAlert: !isLoadingMore || error.name === 'AbortError', }; }; From 43a1bfd05d105cd371af846f06cdf5b75a1b44d3 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 17:36:35 +0200 Subject: [PATCH 098/280] =?UTF-8?q?[Glitch]=20Fix=20=E2=80=9CFilter=20this?= =?UTF-8?q?=20post=E2=80=9D=20potentially=20listing=20deleted=20filters?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Port 2cae5f5b8d4d0702fe9835a0ce2782f238755d0c to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/reducers/filters.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/reducers/filters.js b/app/javascript/flavours/glitch/reducers/filters.js index cc1d3349c..f4f97cd3a 100644 --- a/app/javascript/flavours/glitch/reducers/filters.js +++ b/app/javascript/flavours/glitch/reducers/filters.js @@ -35,7 +35,7 @@ export default function filters(state = ImmutableMap(), action) { case FILTERS_CREATE_SUCCESS: return normalizeFilter(state, action.filter); case FILTERS_FETCH_SUCCESS: - //TODO: handle deleting obsolete filters + return normalizeFilters(ImmutableMap(), action.filters); case FILTERS_IMPORT: return normalizeFilters(state, action.filters); default: From d99f91bceb01b8d7bd48a3872d894226512cc09f Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 17:36:54 +0200 Subject: [PATCH 099/280] [Glitch] Fix quickly switching notification filters resulting in empty or incorrect list Port 55bef1e34fc3b07ed7f762d565a161e74e128016 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/notifications.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/notifications.js b/app/javascript/flavours/glitch/actions/notifications.js index ae3ee1a4c..4581ebc36 100644 --- a/app/javascript/flavours/glitch/actions/notifications.js +++ b/app/javascript/flavours/glitch/actions/notifications.js @@ -153,15 +153,22 @@ const excludeTypesFromFilter = filter => { const noOp = () => {}; +let expandNotificationsController = new AbortController(); + export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { return (dispatch, getState) => { const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); const notifications = getState().get('notifications'); const isLoadingMore = !!maxId; - if (notifications.get('isLoading') && !forceLoad) { - done(); - return; + if (notifications.get('isLoading')) { + if (forceLoad) { + expandNotificationsController.abort(); + expandNotificationsController = new AbortController(); + } else { + done(); + return; + } } const params = { @@ -186,7 +193,7 @@ export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { dispatch(expandNotificationsRequest(isLoadingMore)); - api(getState).get('/api/v1/notifications', { params }).then(response => { + api(getState).get('/api/v1/notifications', { params, signal: expandNotificationsController.signal }).then(response => { const next = getLinks(response).refs.find(link => link.rel === 'next'); dispatch(importFetchedAccounts(response.data.map(item => item.account))); @@ -227,7 +234,7 @@ export function expandNotificationsFail(error, isLoadingMore) { type: NOTIFICATIONS_EXPAND_FAIL, error, skipLoading: !isLoadingMore, - skipAlert: !isLoadingMore, + skipAlert: !isLoadingMore || error.name === 'AbortError', }; }; From 81e1cc5fece9a431c28ca648c2dd4b1b5f643f13 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 26 Aug 2022 03:10:01 +0900 Subject: [PATCH 100/280] Replace to `workbox-webpack-plugin` from `offline-plugin` (#18409) --- app/javascript/mastodon/main.js | 26 +- .../mastodon/service_worker/entry.js | 81 +- .../service_worker/web_push_notifications.js | 7 +- app/javascript/mastodon/storage/db.js | 27 - app/javascript/mastodon/storage/modifier.js | 211 ---- config/webpack/production.js | 84 +- package.json | 7 +- public/sw.js | 2 +- public/sw.js.map | 1 + yarn.lock | 1058 +++++++++++++++-- 10 files changed, 1059 insertions(+), 445 deletions(-) delete mode 100644 app/javascript/mastodon/storage/db.js delete mode 100644 app/javascript/mastodon/storage/modifier.js create mode 120000 public/sw.js.map diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.js index bda51f692..a66975bfd 100644 --- a/app/javascript/mastodon/main.js +++ b/app/javascript/mastodon/main.js @@ -1,9 +1,9 @@ -import * as registerPushNotifications from './actions/push_notifications'; -import { setupBrowserNotifications } from './actions/notifications'; -import { default as Mastodon, store } from './containers/mastodon'; import React from 'react'; import ReactDOM from 'react-dom'; -import ready from './ready'; +import * as registerPushNotifications from 'mastodon/actions/push_notifications'; +import { setupBrowserNotifications } from 'mastodon/actions/notifications'; +import Mastodon, { store } from 'mastodon/containers/mastodon'; +import ready from 'mastodon/ready'; const perf = require('./performance'); @@ -24,10 +24,20 @@ function main() { ReactDOM.render(, mountNode); store.dispatch(setupBrowserNotifications()); - if (process.env.NODE_ENV === 'production') { - // avoid offline in dev mode because it's harder to debug - require('offline-plugin/runtime').install(); - store.dispatch(registerPushNotifications.register()); + + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + import('workbox-window') + .then(({ Workbox }) => { + const wb = new Workbox('/sw.js'); + + return wb.register(); + }) + .then(() => { + store.dispatch(registerPushNotifications.register()); + }) + .catch(err => { + console.error(err); + }); } perf.stop('main()'); }); diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js index b354f3b33..e4c66cc00 100644 --- a/app/javascript/mastodon/service_worker/entry.js +++ b/app/javascript/mastodon/service_worker/entry.js @@ -1,20 +1,59 @@ -// import { freeStorage, storageFreeable } from '../storage/modifier'; -import './web_push_notifications'; +import { ExpirationPlugin } from 'workbox-expiration'; +import { precacheAndRoute } from 'workbox-precaching'; +import { registerRoute } from 'workbox-routing'; +import { CacheFirst } from 'workbox-strategies'; +import { handleNotificationClick, handlePush } from './web_push_notifications'; -// function openSystemCache() { -// return caches.open('mastodon-system'); -// } +const CACHE_NAME_PREFIX = 'mastodon-'; function openWebCache() { - return caches.open('mastodon-web'); + return caches.open(`${CACHE_NAME_PREFIX}web`); } function fetchRoot() { return fetch('/', { credentials: 'include', redirect: 'manual' }); } -// const firefox = navigator.userAgent.match(/Firefox\/(\d+)/); -// const invalidOnlyIfCached = firefox && firefox[1] < 60; +precacheAndRoute(self.__WB_MANIFEST); + +registerRoute( + /locale_.*\.js$/, + new CacheFirst({ + cacheName: `${CACHE_NAME_PREFIX}locales`, + plugins: [ + new ExpirationPlugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month + maxEntries: 5, + }), + ], + }), +); + +registerRoute( + ({ request }) => request.destination === 'font', + new CacheFirst({ + cacheName: `${CACHE_NAME_PREFIX}fonts`, + plugins: [ + new ExpirationPlugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month + maxEntries: 5, + }), + ], + }), +); + +registerRoute( + ({ request }) => ['audio', 'image', 'track', 'video'].includes(request.destination), + new CacheFirst({ + cacheName: `m${CACHE_NAME_PREFIX}media`, + plugins: [ + new ExpirationPlugin({ + maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week + maxEntries: 256, + }), + ], + }), +); // Cause a new version of a registered Service Worker to replace an existing one // that is already installed, and replace the currently active worker on open pages. @@ -52,26 +91,8 @@ self.addEventListener('fetch', function(event) { return response; })); - } /* else if (storageFreeable && (ATTACHMENT_HOST ? url.host === ATTACHMENT_HOST : url.pathname.startsWith('/system/'))) { - event.respondWith(openSystemCache().then(cache => { - return cache.match(event.request.url).then(cached => { - if (cached === undefined) { - const asyncResponse = invalidOnlyIfCached && event.request.cache === 'only-if-cached' ? - fetch(event.request, { cache: 'no-cache' }) : fetch(event.request); - - return asyncResponse.then(response => { - if (response.ok) { - cache - .put(event.request.url, response.clone()) - .catch(()=>{}).then(freeStorage()).catch(); - } - - return response; - }); - } - - return cached; - }); - })); - } */ + } }); + +self.addEventListener('push', handlePush); +self.addEventListener('notificationclick', handleNotificationClick); diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js index 48a2be7e7..9b75e9b9d 100644 --- a/app/javascript/mastodon/service_worker/web_push_notifications.js +++ b/app/javascript/mastodon/service_worker/web_push_notifications.js @@ -75,7 +75,7 @@ const formatMessage = (messageId, locale, values = {}) => const htmlToPlainText = html => unescape(html.replace(//g, '\n').replace(/<\/p>

/g, '\n\n').replace(/<[^>]*>/g, '')); -const handlePush = (event) => { +export const handlePush = (event) => { const { access_token, notification_id, preferred_locale, title, body, icon } = event.data.json(); // Placeholder until more information can be loaded @@ -189,7 +189,7 @@ const openUrl = url => return self.clients.openWindow(url); }); -const handleNotificationClick = (event) => { +export const handleNotificationClick = (event) => { const reactToNotificationClick = new Promise((resolve, reject) => { if (event.action) { if (event.action === 'expand') { @@ -211,6 +211,3 @@ const handleNotificationClick = (event) => { event.waitUntil(reactToNotificationClick); }; - -self.addEventListener('push', handlePush); -self.addEventListener('notificationclick', handleNotificationClick); diff --git a/app/javascript/mastodon/storage/db.js b/app/javascript/mastodon/storage/db.js deleted file mode 100644 index 377a792a7..000000000 --- a/app/javascript/mastodon/storage/db.js +++ /dev/null @@ -1,27 +0,0 @@ -export default () => new Promise((resolve, reject) => { - // ServiceWorker is required to synchronize the login state. - // Microsoft Edge 17 does not support getAll according to: - // Catalog of standard and vendor APIs across browsers - Microsoft Edge Development - // https://developer.microsoft.com/en-us/microsoft-edge/platform/catalog/?q=specName%3Aindexeddb - if (!('caches' in self && 'getAll' in IDBObjectStore.prototype)) { - reject(); - return; - } - - const request = indexedDB.open('mastodon'); - - request.onerror = reject; - request.onsuccess = ({ target }) => resolve(target.result); - - request.onupgradeneeded = ({ target }) => { - const accounts = target.result.createObjectStore('accounts', { autoIncrement: true }); - const statuses = target.result.createObjectStore('statuses', { autoIncrement: true }); - - accounts.createIndex('id', 'id', { unique: true }); - accounts.createIndex('moved', 'moved'); - - statuses.createIndex('id', 'id', { unique: true }); - statuses.createIndex('account', 'account'); - statuses.createIndex('reblog', 'reblog'); - }; -}); diff --git a/app/javascript/mastodon/storage/modifier.js b/app/javascript/mastodon/storage/modifier.js deleted file mode 100644 index 9fadabef4..000000000 --- a/app/javascript/mastodon/storage/modifier.js +++ /dev/null @@ -1,211 +0,0 @@ -import openDB from './db'; - -const accountAssetKeys = ['avatar', 'avatar_static', 'header', 'header_static']; -const storageMargin = 8388608; -const storeLimit = 1024; - -// navigator.storage is not present on: -// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.100 Safari/537.36 Edge/16.16299 -// estimate method is not present on Chrome 57.0.2987.98 on Linux. -export const storageFreeable = 'storage' in navigator && 'estimate' in navigator.storage; - -function openCache() { - // ServiceWorker and Cache API is not available on iOS 11 - // https://webkit.org/status/#specification-service-workers - return self.caches ? caches.open('mastodon-system') : Promise.reject(); -} - -function printErrorIfAvailable(error) { - if (error) { - console.warn(error); - } -} - -function put(name, objects, onupdate, oncreate) { - return openDB().then(db => (new Promise((resolve, reject) => { - const putTransaction = db.transaction(name, 'readwrite'); - const putStore = putTransaction.objectStore(name); - const putIndex = putStore.index('id'); - - objects.forEach(object => { - putIndex.getKey(object.id).onsuccess = retrieval => { - function addObject() { - putStore.add(object); - } - - function deleteObject() { - putStore.delete(retrieval.target.result).onsuccess = addObject; - } - - if (retrieval.target.result) { - if (onupdate) { - onupdate(object, retrieval.target.result, putStore, deleteObject); - } else { - deleteObject(); - } - } else { - if (oncreate) { - oncreate(object, addObject); - } else { - addObject(); - } - } - }; - }); - - putTransaction.oncomplete = () => { - const readTransaction = db.transaction(name, 'readonly'); - const readStore = readTransaction.objectStore(name); - const count = readStore.count(); - - count.onsuccess = () => { - const excess = count.result - storeLimit; - - if (excess > 0) { - const retrieval = readStore.getAll(null, excess); - - retrieval.onsuccess = () => resolve(retrieval.result); - retrieval.onerror = reject; - } else { - resolve([]); - } - }; - - count.onerror = reject; - }; - - putTransaction.onerror = reject; - })).then(resolved => { - db.close(); - return resolved; - }, error => { - db.close(); - throw error; - })); -} - -function evictAccountsByRecords(records) { - return openDB().then(db => { - const transaction = db.transaction(['accounts', 'statuses'], 'readwrite'); - const accounts = transaction.objectStore('accounts'); - const accountsIdIndex = accounts.index('id'); - const accountsMovedIndex = accounts.index('moved'); - const statuses = transaction.objectStore('statuses'); - const statusesIndex = statuses.index('account'); - - function evict(toEvict) { - toEvict.forEach(record => { - openCache() - .then(cache => accountAssetKeys.forEach(key => cache.delete(records[key]))) - .catch(printErrorIfAvailable); - - accountsMovedIndex.getAll(record.id).onsuccess = ({ target }) => evict(target.result); - - statusesIndex.getAll(record.id).onsuccess = - ({ target }) => evictStatusesByRecords(target.result); - - accountsIdIndex.getKey(record.id).onsuccess = - ({ target }) => target.result && accounts.delete(target.result); - }); - } - - evict(records); - - db.close(); - }).catch(printErrorIfAvailable); -} - -export function evictStatus(id) { - evictStatuses([id]); -} - -export function evictStatuses(ids) { - return openDB().then(db => { - const transaction = db.transaction('statuses', 'readwrite'); - const store = transaction.objectStore('statuses'); - const idIndex = store.index('id'); - const reblogIndex = store.index('reblog'); - - ids.forEach(id => { - reblogIndex.getAllKeys(id).onsuccess = - ({ target }) => target.result.forEach(reblogKey => store.delete(reblogKey)); - - idIndex.getKey(id).onsuccess = - ({ target }) => target.result && store.delete(target.result); - }); - - db.close(); - }).catch(printErrorIfAvailable); -} - -function evictStatusesByRecords(records) { - return evictStatuses(records.map(({ id }) => id)); -} - -export function putAccounts(records, avatarStatic) { - const avatarKey = avatarStatic ? 'avatar_static' : 'avatar'; - const newURLs = []; - - put('accounts', records, (newRecord, oldKey, store, oncomplete) => { - store.get(oldKey).onsuccess = ({ target }) => { - accountAssetKeys.forEach(key => { - const newURL = newRecord[key]; - const oldURL = target.result[key]; - - if (newURL !== oldURL) { - openCache() - .then(cache => cache.delete(oldURL)) - .catch(printErrorIfAvailable); - } - }); - - const newURL = newRecord[avatarKey]; - const oldURL = target.result[avatarKey]; - - if (newURL !== oldURL) { - newURLs.push(newURL); - } - - oncomplete(); - }; - }, (newRecord, oncomplete) => { - newURLs.push(newRecord[avatarKey]); - oncomplete(); - }).then(records => Promise.all([ - evictAccountsByRecords(records), - openCache().then(cache => cache.addAll(newURLs)), - ])).then(freeStorage, error => { - freeStorage(); - throw error; - }).catch(printErrorIfAvailable); -} - -export function putStatuses(records) { - put('statuses', records) - .then(evictStatusesByRecords) - .catch(printErrorIfAvailable); -} - -export function freeStorage() { - return storageFreeable && navigator.storage.estimate().then(({ quota, usage }) => { - if (usage + storageMargin < quota) { - return null; - } - - return openDB().then(db => new Promise((resolve, reject) => { - const retrieval = db.transaction('accounts', 'readonly').objectStore('accounts').getAll(null, 1); - - retrieval.onsuccess = () => { - if (retrieval.result.length > 0) { - resolve(evictAccountsByRecords(retrieval.result).then(freeStorage)); - } else { - resolve(caches.delete('mastodon-system')); - } - }; - - retrieval.onerror = reject; - - db.close(); - })); - }); -} diff --git a/config/webpack/production.js b/config/webpack/production.js index cd3d01035..79dcebc7c 100644 --- a/config/webpack/production.js +++ b/config/webpack/production.js @@ -1,29 +1,16 @@ // Note: You must restart bin/webpack-dev-server for changes to take effect -const path = require('path'); -const { URL } = require('url'); +const { createHash } = require('crypto'); +const { readFileSync } = require('fs'); +const { resolve } = require('path'); const { merge } = require('webpack-merge'); const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); -const OfflinePlugin = require('offline-plugin'); const TerserPlugin = require('terser-webpack-plugin'); const CompressionPlugin = require('compression-webpack-plugin'); -const { output } = require('./configuration'); +const { InjectManifest } = require('workbox-webpack-plugin'); const sharedConfig = require('./shared'); -let attachmentHost; - -if (process.env.S3_ENABLED === 'true') { - if (process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST) { - attachmentHost = process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST; - } else { - attachmentHost = process.env.S3_HOSTNAME || `s3-${process.env.S3_REGION || 'us-east-1'}.amazonaws.com`; - } -} else if (process.env.SWIFT_ENABLED === 'true') { - const { host } = new URL(process.env.SWIFT_OBJECT_URL); - attachmentHost = host; -} else { - attachmentHost = null; -} +const root = resolve(__dirname, '..', '..'); module.exports = merge(sharedConfig, { mode: 'production', @@ -52,47 +39,28 @@ module.exports = merge(sharedConfig, { openAnalyzer: false, logLevel: 'silent', // do not bother Webpacker, who runs with --json and parses stdout }), - new OfflinePlugin({ - publicPath: output.publicPath, // sw.js must be served from the root to avoid scope issues - safeToUseOptionalCaches: true, - caches: { - main: [':rest:'], - additional: [':externals:'], - optional: [ - '**/locale_*.js', // don't fetch every locale; the user only needs one - '**/*_polyfills-*.js', // the user may not need polyfills - '**/*.woff2', // the user may have system-fonts enabled - // images/audio can be cached on-demand - '**/*.png', - '**/*.jpg', - '**/*.jpeg', - '**/*.svg', - '**/*.mp3', - '**/*.ogg', - ], - }, - externals: [ - '/emoji/1f602.svg', // used for emoji picker dropdown - '/emoji/sheet_10.png', // used in emoji-mart + new InjectManifest({ + additionalManifestEntries: ['1f602.svg', 'sheet_13.png'].map((filename) => { + const path = resolve(root, 'public', 'emoji', filename); + const body = readFileSync(path); + const md5 = createHash('md5'); + + md5.update(body); + + return { + revision: md5.digest('hex'), + url: `/emoji/${filename}`, + }; + }), + exclude: [ + /(?:base|extra)_polyfills-.*\.js$/, + /locale_.*\.js$/, + /mailer-.*\.(?:css|js)$/, ], - excludes: [ - '**/*.gz', - '**/*.map', - 'stats.json', - 'report.html', - // any browser that supports ServiceWorker will support woff2 - '**/*.eot', - '**/*.ttf', - '**/*-webfont-*.svg', - '**/*.woff', - ], - ServiceWorker: { - entry: `imports-loader?additionalCode=${encodeURIComponent(`var ATTACHMENT_HOST=${JSON.stringify(attachmentHost)};`)}!${encodeURI(path.join(__dirname, '../../app/javascript/mastodon/service_worker/entry.js'))}`, - cacheName: 'mastodon', - output: '../assets/sw.js', - publicPath: '/sw.js', - minify: true, - }, + include: [/\.js$/, /\.css$/], + maximumFileSizeToCacheInBytes: 2 * 1_024 * 1_024, // 2 MiB + swDest: resolve(root, 'public', 'packs', 'sw.js'), + swSrc: resolve(root, 'app', 'javascript', 'mastodon', 'service_worker', 'entry.js'), }), ], }); diff --git a/package.json b/package.json index b605fe114..6973afeaa 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,6 @@ "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.1.5", - "offline-plugin": "^5.0.7", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", "postcss": "^8.4.16", @@ -136,6 +135,12 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", + "workbox-expiration": "^6.5.3", + "workbox-precaching": "^6.5.3", + "workbox-routing": "^6.5.3", + "workbox-strategies": "^6.5.3", + "workbox-webpack-plugin": "^6.5.3", + "workbox-window": "^6.5.3", "ws": "^8.8.1" }, "devDependencies": { diff --git a/public/sw.js b/public/sw.js index 1471a9e64..debb9af9d 120000 --- a/public/sw.js +++ b/public/sw.js @@ -1 +1 @@ -assets/sw.js \ No newline at end of file +packs/sw.js \ No newline at end of file diff --git a/public/sw.js.map b/public/sw.js.map new file mode 120000 index 000000000..0734c8199 --- /dev/null +++ b/public/sw.js.map @@ -0,0 +1 @@ +packs/sw.js.map \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ef957156d..be3db7a96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,6 +14,15 @@ dependencies: "@jridgewell/trace-mapping" "^0.3.0" +"@apideck/better-ajv-errors@^0.3.1": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz#ab0b1e981e1749bf59736cf7ebe25cfc9f949c15" + integrity sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg== + dependencies: + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -21,19 +30,45 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" +"@babel/compat-data@^7.17.10": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" + integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.13", "@babel/core@^7.7.2": +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.10" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.18.13": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== @@ -63,7 +98,16 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.13", "@babel/generator@^7.7.2": +"@babel/generator@^7.17.10", "@babel/generator@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.6.tgz#9ab2d46d3cbf631f0e80f72e72874a04c3fc12a9" + integrity sha512-AIwwoOS8axIC5MZbhNHRLKi3D+DMpvDf9XUcu3pIVAfOHFT45f4AoDAltRbHIQomCipkCZxrNkfpOEHhJz/VKw== + dependencies: + "@babel/types" "^7.18.6" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + +"@babel/generator@^7.18.13": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== @@ -95,6 +139,16 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-compilation-targets@^7.17.10": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" + integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== + dependencies: + "@babel/compat-data" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" @@ -185,14 +239,35 @@ dependencies: "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": +"@babel/helper-module-transforms@^7.17.7", "@babel/helper-module-transforms@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" + integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== @@ -285,7 +360,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== -"@babel/helper-validator-option@^7.18.6": +"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== @@ -310,6 +385,15 @@ "@babel/traverse" "^7.18.10" "@babel/types" "^7.18.10" +"@babel/helpers@^7.17.9": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" + integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + "@babel/helpers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" @@ -337,18 +421,32 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.17.10": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" + integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== + +"@babel/parser@^7.18.10", "@babel/parser@^7.18.13": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" + integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" @@ -358,6 +456,16 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" + integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-proposal-async-generator-functions@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" @@ -368,7 +476,7 @@ "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -376,7 +484,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.6": +"@babel/plugin-proposal-class-static-block@^7.17.6", "@babel/plugin-proposal-class-static-block@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== @@ -396,7 +504,7 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.18.6" -"@babel/plugin-proposal-dynamic-import@^7.18.6": +"@babel/plugin-proposal-dynamic-import@^7.16.7", "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== @@ -404,6 +512,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" + integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" @@ -412,7 +528,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.18.6": +"@babel/plugin-proposal-json-strings@^7.16.7", "@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== @@ -420,6 +536,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" + integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" @@ -428,7 +552,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -436,7 +560,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.18.6": +"@babel/plugin-proposal-numeric-separator@^7.16.7", "@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -444,6 +568,17 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-proposal-object-rest-spread@^7.17.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" + integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== + dependencies: + "@babel/compat-data" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" @@ -455,7 +590,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.18.8" -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": +"@babel/plugin-proposal-optional-catch-binding@^7.16.7", "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== @@ -463,6 +598,15 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" + integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" @@ -472,7 +616,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.16.11", "@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== @@ -480,7 +624,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@^7.16.7", "@babel/plugin-proposal-private-property-in-object@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== @@ -490,7 +634,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== @@ -645,14 +789,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.18.6": +"@babel/plugin-transform-arrow-functions@^7.16.7", "@babel/plugin-transform-arrow-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.18.6": +"@babel/plugin-transform-async-to-generator@^7.16.8", "@babel/plugin-transform-async-to-generator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== @@ -661,13 +805,20 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-remap-async-to-generator" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.18.6": +"@babel/plugin-transform-block-scoped-functions@^7.16.7", "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" + integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-block-scoping@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" @@ -675,6 +826,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-classes@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f" + integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + "@babel/plugin-transform-classes@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" @@ -689,6 +854,13 @@ "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" + integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-computed-properties@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" @@ -696,6 +868,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-destructuring@^7.17.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" + integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-destructuring@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" @@ -703,7 +882,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== @@ -711,6 +890,13 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" + integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" @@ -718,7 +904,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-exponentiation-operator@^7.18.6": +"@babel/plugin-transform-exponentiation-operator@^7.16.7", "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== @@ -726,6 +912,13 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-for-of@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c" + integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" @@ -733,6 +926,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-function-name@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" + integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== + dependencies: + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" @@ -742,6 +944,13 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-literals@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" + integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" @@ -749,14 +958,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-member-expression-literals@^7.18.6": +"@babel/plugin-transform-member-expression-literals@^7.16.7", "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.18.6": +"@babel/plugin-transform-modules-amd@^7.16.7", "@babel/plugin-transform-modules-amd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== @@ -765,7 +974,7 @@ "@babel/helper-plugin-utils" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.18.6": +"@babel/plugin-transform-modules-commonjs@^7.17.9", "@babel/plugin-transform-modules-commonjs@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== @@ -775,6 +984,17 @@ "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.17.8": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" + integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" @@ -786,7 +1006,7 @@ "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.18.6": +"@babel/plugin-transform-modules-umd@^7.16.7", "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== @@ -794,7 +1014,7 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10", "@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== @@ -802,14 +1022,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-new-target@^7.18.6": +"@babel/plugin-transform-new-target@^7.16.7", "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.18.6": +"@babel/plugin-transform-object-super@^7.16.7", "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== @@ -817,6 +1037,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" +"@babel/plugin-transform-parameters@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc" + integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-parameters@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" @@ -824,7 +1051,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-property-literals@^7.18.6": +"@babel/plugin-transform-property-literals@^7.16.7", "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== @@ -872,7 +1099,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.18.6": +"@babel/plugin-transform-regenerator@^7.17.9", "@babel/plugin-transform-regenerator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== @@ -880,7 +1107,7 @@ "@babel/helper-plugin-utils" "^7.18.6" regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.18.6": +"@babel/plugin-transform-reserved-words@^7.16.7", "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== @@ -899,13 +1126,21 @@ babel-plugin-polyfill-regenerator "^0.4.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.18.6": +"@babel/plugin-transform-shorthand-properties@^7.16.7", "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-spread@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" + integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-transform-spread@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" @@ -914,13 +1149,20 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" -"@babel/plugin-transform-sticky-regex@^7.18.6": +"@babel/plugin-transform-sticky-regex@^7.16.7", "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" + integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" @@ -928,6 +1170,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" + integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" @@ -935,6 +1184,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" + integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" @@ -942,7 +1198,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-regex@^7.18.6": +"@babel/plugin-transform-unicode-regex@^7.16.7", "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== @@ -950,6 +1206,86 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" +"@babel/preset-env@^7.11.0": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" + integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.17.6" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.17.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.17.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.17.9" + "@babel/plugin-transform-modules-systemjs" "^7.17.8" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.17.9" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.17.10" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + "@babel/preset-env@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" @@ -1069,14 +1405,30 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": +"@babel/template@^7.16.7", "@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/template@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== @@ -1085,7 +1437,23 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.17.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" + integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.9": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== @@ -1101,7 +1469,15 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.17.10", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" + integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.9": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== @@ -1610,6 +1986,43 @@ resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.6.tgz#de486ae0a663e1bed637a012cbb2739bfcfa2031" integrity sha512-2M4zlthYmOC6X/tcPcFd//sIL26a7JbCpGNl8uIrQf+pR1Z47uhYt9cOwVqJTJZPurdy2k+YY3Pn64pqruAPEA== +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sinclair/typebox@^0.24.1": version "0.24.20" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" @@ -1629,6 +2042,16 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@surma/rollup-plugin-off-main-thread@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + "@testing-library/dom@^8.0.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.1.0.tgz#f8358b1883844ea569ba76b7e94582168df5370d" @@ -1715,6 +2138,11 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -1885,6 +2313,13 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + "@types/scheduler@*": version "0.16.1" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" @@ -1912,6 +2347,11 @@ resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== +"@types/trusted-types@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" + integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -2189,6 +2629,16 @@ ajv@^8.0.1: require-from-string "^2.0.2" uri-js "^4.2.2" +ajv@^8.6.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -2457,11 +2907,21 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2578,6 +3038,15 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + babel-plugin-polyfill-corejs2@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" @@ -2587,6 +3056,14 @@ babel-plugin-polyfill-corejs2@^0.3.2: "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + babel-plugin-polyfill-corejs3@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" @@ -2595,6 +3072,13 @@ babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + babel-plugin-polyfill-regenerator@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" @@ -2689,11 +3173,6 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2967,6 +3446,11 @@ bufferutil@^4.0.6: dependencies: node-gyp-build "^4.3.0" +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -3153,6 +3637,14 @@ chalk@^4.0, chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -3388,6 +3880,11 @@ commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -3640,6 +4137,11 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -3947,11 +4449,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" - integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w== - deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -4223,10 +4720,12 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.3.4: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== +ejs@^3.1.6: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" electron-to-chromium@^1.3.723: version "1.3.736" @@ -4285,11 +4784,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -4687,6 +5181,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4880,7 +5379,7 @@ fast-glob@^3.2.11, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -4946,6 +5445,13 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -5110,6 +5616,16 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -5140,7 +5656,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.3.2, fsevents@~2.3.1: +fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -5213,6 +5729,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -5258,7 +5779,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -5716,6 +6237,11 @@ idb-keyval@^3.2.0: resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-3.2.0.tgz#cbbf354deb5684b6cdc84376294fc05932845bd6" integrity sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ== +idb@^6.1.4: + version "6.1.5" + resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" + integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -6142,6 +6668,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + is-nan@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" @@ -6172,6 +6703,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + is-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" @@ -6233,6 +6769,11 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -6372,6 +6913,16 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jest-changed-files@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" @@ -6740,6 +7291,15 @@ jest-watcher@^28.1.3: jest-util "^28.1.3" string-length "^4.0.1" +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest-worker@^26.5.0: version "26.5.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" @@ -6889,6 +7449,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -6906,11 +7471,6 @@ json3@^3.3.3: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -6918,7 +7478,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.1: +json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== @@ -6930,12 +7490,34 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: +jsonpointer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072" + integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" + integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + dependencies: + array-includes "^3.1.3" + object.assign "^4.1.2" + +jsx-ast-utils@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== @@ -7021,16 +7603,6 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@0.2.x: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" @@ -7124,6 +7696,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -7170,6 +7747,13 @@ lz-string@^1.4.4: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -7427,7 +8011,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -7897,17 +8481,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -offline-plugin@^5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.7.tgz#26936ad1a7699f4d67e0a095a258972a4ccf1788" - integrity sha512-ArMFt4QFjK0wg8B5+R/6tt65u6Dk+Pkx4PAcW5O7mgIF3ywMepaQqFOQgfZD4ybanuGwuJihxUwMRgkzd+YGYw== - dependencies: - deep-extend "^0.5.1" - ejs "^2.3.4" - loader-utils "0.2.x" - minimatch "^3.0.3" - slash "^1.0.0" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -8331,16 +8904,16 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -8809,6 +9382,11 @@ prettier@^2.7.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" @@ -9693,6 +10271,23 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.43.1: + version "2.72.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.72.1.tgz#861c94790537b10008f0ca0fbc60e631aabdd045" + integrity sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA== + optionalDependencies: + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -9869,6 +10464,13 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -10013,11 +10615,6 @@ sisteransi@^1.0.4: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -10112,7 +10709,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@~0.5.12, source-map-support@~0.5.19, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -10140,11 +10737,23 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.8.0-beta.0, source-map@~0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -10344,7 +10953,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.matchall@^4.0.7: +string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== @@ -10390,6 +10999,15 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + stringz@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/stringz/-/stringz-2.1.0.tgz#5896b4713eac31157556040fb90258fb02c1630c" @@ -10678,6 +11296,21 @@ tcomb@^2.5.0: resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0" integrity sha1-ENYpWAQWaaXVNWe5pO6M3iKxwrA= +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== + dependencies: + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -10725,6 +11358,16 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.0.0: + version "5.13.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799" + integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA== + dependencies: + acorn "^8.5.0" + commander "^2.20.0" + source-map "~0.8.0-beta.0" + source-map-support "~0.5.20" + terser@^5.3.4: version "5.3.4" resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.4.tgz#e510e05f86e0bd87f01835c3238839193f77a60c" @@ -10883,6 +11526,13 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + tr46@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" @@ -10959,6 +11609,11 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -11069,11 +11724,23 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -11092,7 +11759,7 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1: +upath@^1.1.1, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -11318,6 +11985,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" @@ -11532,6 +12204,15 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -11584,6 +12265,175 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +workbox-background-sync@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c" + integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw== + dependencies: + idb "^6.1.4" + workbox-core "6.5.3" + +workbox-broadcast-update@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc" + integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg== + dependencies: + workbox-core "6.5.3" + +workbox-build@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170" + integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w== + dependencies: + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.3" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.5.3" + workbox-broadcast-update "6.5.3" + workbox-cacheable-response "6.5.3" + workbox-core "6.5.3" + workbox-expiration "6.5.3" + workbox-google-analytics "6.5.3" + workbox-navigation-preload "6.5.3" + workbox-precaching "6.5.3" + workbox-range-requests "6.5.3" + workbox-recipes "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + workbox-streams "6.5.3" + workbox-sw "6.5.3" + workbox-window "6.5.3" + +workbox-cacheable-response@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47" + integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ== + dependencies: + workbox-core "6.5.3" + +workbox-core@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" + integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== + +workbox-expiration@6.5.3, workbox-expiration@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" + integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== + dependencies: + idb "^6.1.4" + workbox-core "6.5.3" + +workbox-google-analytics@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe" + integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw== + dependencies: + workbox-background-sync "6.5.3" + workbox-core "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + +workbox-navigation-preload@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3" + integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg== + dependencies: + workbox-core "6.5.3" + +workbox-precaching@6.5.3, workbox-precaching@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" + integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== + dependencies: + workbox-core "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + +workbox-range-requests@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941" + integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA== + dependencies: + workbox-core "6.5.3" + +workbox-recipes@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a" + integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig== + dependencies: + workbox-cacheable-response "6.5.3" + workbox-core "6.5.3" + workbox-expiration "6.5.3" + workbox-precaching "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + +workbox-routing@6.5.3, workbox-routing@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" + integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== + dependencies: + workbox-core "6.5.3" + +workbox-strategies@6.5.3, workbox-strategies@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" + integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== + dependencies: + workbox-core "6.5.3" + +workbox-streams@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b" + integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w== + dependencies: + workbox-core "6.5.3" + workbox-routing "6.5.3" + +workbox-sw@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd" + integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A== + +workbox-webpack-plugin@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.3.tgz#c37bb323be4952311565c07db51054fe59c87d73" + integrity sha512-Es8Xr02Gi6Kc3zaUwR691ZLy61hz3vhhs5GztcklQ7kl5k2qAusPh0s6LF3wEtlpfs9ZDErnmy5SErwoll7jBA== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.5.3" + +workbox-window@6.5.3, workbox-window@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" + integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.5.3" + worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" From 99aed9069d4319d53779c483142e6649f3fef17b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 20:10:43 +0200 Subject: [PATCH 101/280] Bump puma from 5.6.4 to 5.6.5 (#19042) Bumps [puma](https://github.com/puma/puma) from 5.6.4 to 5.6.5. - [Release notes](https://github.com/puma/puma/releases) - [Changelog](https://github.com/puma/puma/blob/master/History.md) - [Commits](https://github.com/puma/puma/compare/v5.6.4...v5.6.5) --- updated-dependencies: - dependency-name: puma dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8306efec2..076cc2a0d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -479,7 +479,7 @@ GEM pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.7) - puma (5.6.4) + puma (5.6.5) nio4r (~> 2.0) pundit (2.2.0) activesupport (>= 3.0.0) From 0396acf39ea902688374fac65fa7ef5dc4c05512 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 20:39:40 +0200 Subject: [PATCH 102/280] Add audit log entries for user roles (#19040) * Refactor audit log schema * Add audit log entries for user roles --- app/controllers/admin/roles_controller.rb | 3 + .../admin/users/roles_controller.rb | 1 + .../concerns/accountable_concern.rb | 8 ++- app/helpers/admin/action_logs_helper.rb | 61 +++++-------------- app/models/account.rb | 4 ++ app/models/account_warning.rb | 4 ++ app/models/admin/action_log.rb | 36 ++++++----- app/models/admin/action_log_filter.rb | 4 ++ app/models/announcement.rb | 4 ++ app/models/appeal.rb | 8 +++ app/models/custom_emoji.rb | 6 +- app/models/domain_allow.rb | 4 ++ app/models/domain_block.rb | 4 ++ app/models/email_domain_block.rb | 4 ++ app/models/form/account_batch.rb | 2 +- app/models/instance.rb | 2 + app/models/ip_block.rb | 4 ++ app/models/report.rb | 6 ++ app/models/status.rb | 8 +++ app/models/unavailable_domain.rb | 4 ++ app/models/user.rb | 8 +++ app/models/user_role.rb | 4 ++ config/locales/en.yml | 11 +++- ...d_human_identifier_to_admin_action_logs.rb | 7 +++ ...recorded_changes_from_admin_action_logs.rb | 9 +++ db/schema.rb | 6 +- spec/helpers/admin/action_log_helper_spec.rb | 28 --------- 27 files changed, 151 insertions(+), 99 deletions(-) create mode 100644 db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb create mode 100644 db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb diff --git a/app/controllers/admin/roles_controller.rb b/app/controllers/admin/roles_controller.rb index 3e502ccc4..d76aa745b 100644 --- a/app/controllers/admin/roles_controller.rb +++ b/app/controllers/admin/roles_controller.rb @@ -23,6 +23,7 @@ module Admin @role.current_account = current_account if @role.save + log_action :create, @role redirect_to admin_roles_path else render :new @@ -39,6 +40,7 @@ module Admin @role.current_account = current_account if @role.update(resource_params) + log_action :update, @role redirect_to admin_roles_path else render :edit @@ -48,6 +50,7 @@ module Admin def destroy authorize @role, :destroy? @role.destroy! + log_action :destroy, @role redirect_to admin_roles_path end diff --git a/app/controllers/admin/users/roles_controller.rb b/app/controllers/admin/users/roles_controller.rb index 0db50cee9..f5dfc643d 100644 --- a/app/controllers/admin/users/roles_controller.rb +++ b/app/controllers/admin/users/roles_controller.rb @@ -14,6 +14,7 @@ module Admin @user.current_account = current_account if @user.update(resource_params) + log_action :change_role, @user redirect_to admin_account_path(@user.account_id), notice: I18n.t('admin.accounts.change_role.changed_msg') else render :show diff --git a/app/controllers/concerns/accountable_concern.rb b/app/controllers/concerns/accountable_concern.rb index 87d62478d..c1349915f 100644 --- a/app/controllers/concerns/accountable_concern.rb +++ b/app/controllers/concerns/accountable_concern.rb @@ -3,7 +3,11 @@ module AccountableConcern extend ActiveSupport::Concern - def log_action(action, target, options = {}) - Admin::ActionLog.create(account: current_account, action: action, target: target, recorded_changes: options.stringify_keys) + def log_action(action, target) + Admin::ActionLog.create( + account: current_account, + action: action, + target: target + ) end end diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index 47eeeaac3..3e9fe17f4 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -2,64 +2,31 @@ module Admin::ActionLogsHelper def log_target(log) - if log.target - linkable_log_target(log.target) - else - log_target_from_history(log.target_type, log.recorded_changes) - end - end - - private - - def linkable_log_target(record) - case record.class.name + case log.target_type when 'Account' - link_to record.acct, admin_account_path(record.id) + link_to log.human_identifier, admin_account_path(log.target_id) when 'User' - link_to record.account.acct, admin_account_path(record.account_id) + link_to log.human_identifier, admin_account_path(log.route_param) + when 'UserRole' + link_to log.human_identifier, admin_roles_path(log.target_id) when 'CustomEmoji' - record.shortcode + log.human_identifier when 'Report' - link_to "##{record.id}", admin_report_path(record) + link_to "##{log.human_identifier}", admin_report_path(log.target_id) when 'DomainBlock', 'DomainAllow', 'EmailDomainBlock', 'UnavailableDomain' - link_to record.domain, "https://#{record.domain}" + link_to log.human_identifier, "https://#{log.human_identifier}" when 'Status' - link_to record.account.acct, ActivityPub::TagManager.instance.url_for(record) + link_to log.human_identifier, log.permalink when 'AccountWarning' - link_to record.target_account.acct, admin_account_path(record.target_account_id) + link_to log.human_identifier, admin_account_path(log.target_id) when 'Announcement' - link_to truncate(record.text), edit_admin_announcement_path(record.id) + link_to truncate(log.human_identifier), edit_admin_announcement_path(log.target_id) when 'IpBlock' - "#{record.ip}/#{record.ip.prefix} (#{I18n.t("simple_form.labels.ip_block.severities.#{record.severity}")})" + log.human_identifier when 'Instance' - record.domain + log.human_identifier when 'Appeal' - link_to record.account.acct, disputes_strike_path(record.strike) - end - end - - def log_target_from_history(type, attributes) - case type - when 'User' - attributes['username'] - when 'CustomEmoji' - attributes['shortcode'] - when 'DomainBlock', 'DomainAllow', 'EmailDomainBlock', 'UnavailableDomain' - link_to attributes['domain'], "https://#{attributes['domain']}" - when 'Status' - tmp_status = Status.new(attributes.except('reblogs_count', 'favourites_count')) - - if tmp_status.account - link_to tmp_status.account&.acct || "##{tmp_status.account_id}", admin_account_path(tmp_status.account_id) - else - I18n.t('admin.action_logs.deleted_status') - end - when 'Announcement' - truncate(attributes['text'].is_a?(Array) ? attributes['text'].last : attributes['text']) - when 'IpBlock' - "#{attributes['ip']}/#{attributes['ip'].prefix} (#{I18n.t("simple_form.labels.ip_block.severities.#{attributes['severity']}")})" - when 'Instance' - attributes['domain'] + link_to log.human_identifier, disputes_strike_path(log.route_param) end end end diff --git a/app/models/account.rb b/app/models/account.rb index 628692d22..d25afeb89 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -362,6 +362,10 @@ class Account < ApplicationRecord username end + def to_log_human_identifier + acct + end + def excluded_from_timeline_account_ids Rails.cache.fetch("exclude_account_ids_for:#{id}") { block_relationships.pluck(:target_account_id) + blocked_by_relationships.pluck(:account_id) + mute_relationships.pluck(:target_account_id) } end diff --git a/app/models/account_warning.rb b/app/models/account_warning.rb index 6067b54b7..961a078b9 100644 --- a/app/models/account_warning.rb +++ b/app/models/account_warning.rb @@ -43,4 +43,8 @@ class AccountWarning < ApplicationRecord def overruled? overruled_at.present? end + + def to_log_human_identifier + target_account.acct + end end diff --git a/app/models/admin/action_log.rb b/app/models/admin/action_log.rb index 401bfd9ac..4fa8008f5 100644 --- a/app/models/admin/action_log.rb +++ b/app/models/admin/action_log.rb @@ -9,38 +9,42 @@ # action :string default(""), not null # target_type :string # target_id :bigint(8) -# recorded_changes :text default(""), not null # created_at :datetime not null # updated_at :datetime not null +# human_identifier :string +# route_param :string +# permalink :string # class Admin::ActionLog < ApplicationRecord - serialize :recorded_changes + self.ignored_columns = %w( + recorded_changes + ) belongs_to :account belongs_to :target, polymorphic: true, optional: true default_scope -> { order('id desc') } + before_validation :set_human_identifier + before_validation :set_route_param + before_validation :set_permalink + def action super.to_sym end - before_validation :set_changes - private - def set_changes - case action - when :destroy, :create - self.recorded_changes = target.attributes - when :update, :promote, :demote - self.recorded_changes = target.previous_changes - when :change_email - self.recorded_changes = ActiveSupport::HashWithIndifferentAccess.new( - email: [target.email, nil], - unconfirmed_email: [nil, target.unconfirmed_email] - ) - end + def set_human_identifier + self.human_identifier = target.to_log_human_identifier if target.respond_to?(:to_log_human_identifier) + end + + def set_route_param + self.route_param = target.to_log_route_param if target.respond_to?(:to_log_route_param) + end + + def set_permalink + self.permalink = target.to_log_permalink if target.respond_to?(:to_log_permalink) end end diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index 0f2f712a2..6382cd782 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -12,6 +12,7 @@ class Admin::ActionLogFilter reject_appeal: { target_type: 'Appeal', action: 'reject' }.freeze, assigned_to_self_report: { target_type: 'Report', action: 'assigned_to_self' }.freeze, change_email_user: { target_type: 'User', action: 'change_email' }.freeze, + change_role_user: { target_type: 'User', action: 'change_role' }.freeze, confirm_user: { target_type: 'User', action: 'confirm' }.freeze, approve_user: { target_type: 'User', action: 'approve' }.freeze, reject_user: { target_type: 'User', action: 'reject' }.freeze, @@ -22,6 +23,7 @@ class Admin::ActionLogFilter create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze, create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze, create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze, + create_user_role: { target_type: 'UserRole', action: 'create' }.freeze, demote_user: { target_type: 'User', action: 'demote' }.freeze, destroy_announcement: { target_type: 'Announcement', action: 'destroy' }.freeze, destroy_custom_emoji: { target_type: 'CustomEmoji', action: 'destroy' }.freeze, @@ -31,6 +33,7 @@ class Admin::ActionLogFilter destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze, destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze, destroy_status: { target_type: 'Status', action: 'destroy' }.freeze, + destroy_user_role: { target_type: 'UserRole', action: 'destroy' }.freeze, disable_2fa_user: { target_type: 'User', action: 'disable' }.freeze, disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze, disable_user: { target_type: 'User', action: 'disable' }.freeze, @@ -52,6 +55,7 @@ class Admin::ActionLogFilter update_announcement: { target_type: 'Announcement', action: 'update' }.freeze, update_custom_emoji: { target_type: 'CustomEmoji', action: 'update' }.freeze, update_status: { target_type: 'Status', action: 'update' }.freeze, + update_user_role: { target_type: 'UserRole', action: 'update' }.freeze, unblock_email_account: { target_type: 'Account', action: 'unblock_email' }.freeze, }.freeze diff --git a/app/models/announcement.rb b/app/models/announcement.rb index f8183aabc..bedced9de 100644 --- a/app/models/announcement.rb +++ b/app/models/announcement.rb @@ -34,6 +34,10 @@ class Announcement < ApplicationRecord before_validation :set_all_day before_validation :set_published, on: :create + def to_log_human_identifier + text + end + def publish! update!(published: true, published_at: Time.now.utc, scheduled_at: nil) end diff --git a/app/models/appeal.rb b/app/models/appeal.rb index 1f32cfa8b..6fbf60b39 100644 --- a/app/models/appeal.rb +++ b/app/models/appeal.rb @@ -52,6 +52,14 @@ class Appeal < ApplicationRecord update!(rejected_at: Time.now.utc, rejected_by_account: current_account) end + def to_log_human_identifier + account.acct + end + + def to_log_route_param + account_warning_id + end + private def validate_time_frame diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb index 289e3b66f..077ce559a 100644 --- a/app/models/custom_emoji.rb +++ b/app/models/custom_emoji.rb @@ -46,7 +46,7 @@ class CustomEmoji < ApplicationRecord scope :local, -> { where(domain: nil) } scope :remote, -> { where.not(domain: nil) } scope :alphabetic, -> { order(domain: :asc, shortcode: :asc) } - scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches('%.' + domain))) } + scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches("%.#{domain}"))) } scope :listed, -> { local.where(disabled: false).where(visible_in_picker: true) } remotable_attachment :image, LIMIT @@ -67,6 +67,10 @@ class CustomEmoji < ApplicationRecord copy.tap(&:save!) end + def to_log_human_identifier + shortcode + end + class << self def from_text(text, domain = nil) return [] if text.blank? diff --git a/app/models/domain_allow.rb b/app/models/domain_allow.rb index 6aa9267fe..65f494fed 100644 --- a/app/models/domain_allow.rb +++ b/app/models/domain_allow.rb @@ -19,6 +19,10 @@ class DomainAllow < ApplicationRecord scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) } + def to_log_human_identifier + domain + end + class << self def allowed?(domain) !rule_for(domain).nil? diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index a15206b5e..b08687787 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -31,6 +31,10 @@ class DomainBlock < ApplicationRecord scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]).or(where(reject_media: true)) } scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), reject_media, domain')) } + def to_log_human_identifier + domain + end + def policies if suspend? [:suspend] diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index f9d74332b..661f6727d 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -26,6 +26,10 @@ class EmailDomainBlock < ApplicationRecord # Used for adding multiple blocks at once attr_accessor :other_domains + def to_log_human_identifier + domain + end + def history @history ||= Trends::History.new('email_domain_blocks', id) end diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb index dcf155840..98f2cad3e 100644 --- a/app/models/form/account_batch.rb +++ b/app/models/form/account_batch.rb @@ -101,7 +101,7 @@ class Form::AccountBatch def reject_account(account) authorize(account.user, :reject?) - log_action(:reject, account.user, username: account.username) + log_action(:reject, account.user) account.suspend!(origin: :local) AccountDeletionWorker.perform_async(account.id, { 'reserve_username' => false }) end diff --git a/app/models/instance.rb b/app/models/instance.rb index 36110ee40..edbf02a6d 100644 --- a/app/models/instance.rb +++ b/app/models/instance.rb @@ -48,6 +48,8 @@ class Instance < ApplicationRecord domain end + alias to_log_human_identifier to_param + delegate :exhausted_deliveries_days, to: :delivery_failure_tracker def availability_over_days(num_days, end_date = Time.now.utc.to_date) diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index e1ab59806..f40c8a0b1 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -27,6 +27,10 @@ class IpBlock < ApplicationRecord after_commit :reset_cache + def to_log_human_identifier + "#{record.ip}/#{record.ip.prefix}" + end + class << self def blocked?(remote_ip) blocked_ips_map = Rails.cache.fetch(CACHE_KEY) { FastIpMap.new(IpBlock.where(severity: :no_access).pluck(:ip)) } diff --git a/app/models/report.rb b/app/models/report.rb index 2efb6d4a7..42c869dd4 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -115,6 +115,10 @@ class Report < ApplicationRecord Report.where.not(id: id).where(target_account_id: target_account_id).unresolved.exists? end + def to_log_human_identifier + id + end + def history subquery = [ Admin::ActionLog.where( @@ -136,6 +140,8 @@ class Report < ApplicationRecord Admin::ActionLog.from(Arel::Nodes::As.new(subquery, Admin::ActionLog.arel_table)) end + private + def set_uri self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil? && account.local? end diff --git a/app/models/status.rb b/app/models/status.rb index 4828d6340..7eff990aa 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -166,6 +166,14 @@ class Status < ApplicationRecord ].compact.join("\n\n") end + def to_log_human_identifier + account.acct + end + + def to_log_permalink + ActivityPub::TagManager.instance.uri_for(self) + end + def reply? !in_reply_to_id.nil? || attributes['reply'] end diff --git a/app/models/unavailable_domain.rb b/app/models/unavailable_domain.rb index 5e8870bde..dfc0ef14e 100644 --- a/app/models/unavailable_domain.rb +++ b/app/models/unavailable_domain.rb @@ -16,6 +16,10 @@ class UnavailableDomain < ApplicationRecord after_commit :reset_cache! + def to_log_human_identifier + domain + end + private def reset_cache! diff --git a/app/models/user.rb b/app/models/user.rb index 9833300cd..18b9d5928 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -181,6 +181,14 @@ class User < ApplicationRecord update!(disabled: false) end + def to_log_human_identifier + account.acct + end + + def to_log_route_param + account_id + end + def confirm new_user = !confirmed? self.approved = true if open_registrations? && !sign_up_from_ip_requires_approval? diff --git a/app/models/user_role.rb b/app/models/user_role.rb index 57a56c0b0..74dfdc220 100644 --- a/app/models/user_role.rb +++ b/app/models/user_role.rb @@ -155,6 +155,10 @@ class UserRole < ApplicationRecord end end + def to_log_human_identifier + name + end + private def in_permissions?(privilege) diff --git a/config/locales/en.yml b/config/locales/en.yml index e495ef841..5c309ab11 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -235,6 +235,7 @@ en: approve_user: Approve User assigned_to_self_report: Assign Report change_email_user: Change E-mail for User + change_role_user: Change Role of User confirm_user: Confirm User create_account_warning: Create Warning create_announcement: Create Announcement @@ -244,6 +245,7 @@ en: create_email_domain_block: Create E-mail Domain Block create_ip_block: Create IP rule create_unavailable_domain: Create Unavailable Domain + create_user_role: Create Role demote_user: Demote User destroy_announcement: Delete Announcement destroy_custom_emoji: Delete Custom Emoji @@ -254,6 +256,7 @@ en: destroy_ip_block: Delete IP rule destroy_status: Delete Post destroy_unavailable_domain: Delete Unavailable Domain + destroy_user_role: Destroy Role disable_2fa_user: Disable 2FA disable_custom_emoji: Disable Custom Emoji disable_sign_in_token_auth_user: Disable E-mail Token Authentication for User @@ -281,11 +284,13 @@ en: update_custom_emoji: Update Custom Emoji update_domain_block: Update Domain Block update_status: Update Post + update_user_role: Update Role actions: approve_appeal_html: "%{name} approved moderation decision appeal from %{target}" approve_user_html: "%{name} approved sign-up from %{target}" assigned_to_self_report_html: "%{name} assigned report %{target} to themselves" change_email_user_html: "%{name} changed the e-mail address of user %{target}" + change_role_user_html: "%{name} changed role of %{target}" confirm_user_html: "%{name} confirmed e-mail address of user %{target}" create_account_warning_html: "%{name} sent a warning to %{target}" create_announcement_html: "%{name} created new announcement %{target}" @@ -295,9 +300,10 @@ en: create_email_domain_block_html: "%{name} blocked e-mail domain %{target}" create_ip_block_html: "%{name} created rule for IP %{target}" create_unavailable_domain_html: "%{name} stopped delivery to domain %{target}" + create_user_role_html: "%{name} created %{target} role" demote_user_html: "%{name} demoted user %{target}" destroy_announcement_html: "%{name} deleted announcement %{target}" - destroy_custom_emoji_html: "%{name} destroyed emoji %{target}" + destroy_custom_emoji_html: "%{name} deleted emoji %{target}" destroy_domain_allow_html: "%{name} disallowed federation with domain %{target}" destroy_domain_block_html: "%{name} unblocked domain %{target}" destroy_email_domain_block_html: "%{name} unblocked e-mail domain %{target}" @@ -305,6 +311,7 @@ en: destroy_ip_block_html: "%{name} deleted rule for IP %{target}" destroy_status_html: "%{name} removed post by %{target}" destroy_unavailable_domain_html: "%{name} resumed delivery to domain %{target}" + destroy_user_role_html: "%{name} deleted %{target} role" disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}" disable_custom_emoji_html: "%{name} disabled emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} disabled e-mail token authentication for %{target}" @@ -332,7 +339,7 @@ en: update_custom_emoji_html: "%{name} updated emoji %{target}" update_domain_block_html: "%{name} updated domain block for %{target}" update_status_html: "%{name} updated post by %{target}" - deleted_status: "(deleted post)" + update_user_role_html: "%{name} changed %{target} role" empty: No logs found. filter_by_action: Filter by action filter_by_user: Filter by user diff --git a/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb b/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb new file mode 100644 index 000000000..2cb8cddf1 --- /dev/null +++ b/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb @@ -0,0 +1,7 @@ +class AddHumanIdentifierToAdminActionLogs < ActiveRecord::Migration[6.1] + def change + add_column :admin_action_logs, :human_identifier, :string + add_column :admin_action_logs, :route_param, :string + add_column :admin_action_logs, :permalink, :string + end +end diff --git a/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb b/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb new file mode 100644 index 000000000..c42d5df8f --- /dev/null +++ b/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class RemoveRecordedChangesFromAdminActionLogs < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + safety_assured { remove_column :admin_action_logs, :recorded_changes, :text } + end +end diff --git a/db/schema.rb b/db/schema.rb index 15ab2e85e..83fd9549c 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: 2022_08_08_101323) do +ActiveRecord::Schema.define(version: 2022_08_24_164532) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -205,9 +205,11 @@ ActiveRecord::Schema.define(version: 2022_08_08_101323) do t.string "action", default: "", null: false t.string "target_type" t.bigint "target_id" - t.text "recorded_changes", default: "", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.string "human_identifier" + t.string "route_param" + t.string "permalink" t.index ["account_id"], name: "index_admin_action_logs_on_account_id" t.index ["target_type", "target_id"], name: "index_admin_action_logs_on_target_type_and_target_id" end diff --git a/spec/helpers/admin/action_log_helper_spec.rb b/spec/helpers/admin/action_log_helper_spec.rb index 60f5ecdcc..9d7ed4ab7 100644 --- a/spec/helpers/admin/action_log_helper_spec.rb +++ b/spec/helpers/admin/action_log_helper_spec.rb @@ -3,32 +3,4 @@ require 'rails_helper' RSpec.describe Admin::ActionLogsHelper, type: :helper do - klass = Class.new do - include ActionView::Helpers - include Admin::ActionLogsHelper - end - - let(:hoge) { klass.new } - - describe '#log_target' do - after do - hoge.log_target(log) - end - - context 'log.target' do - let(:log) { double(target: true) } - - it 'calls linkable_log_target' do - expect(hoge).to receive(:linkable_log_target).with(log.target) - end - end - - context '!log.target' do - let(:log) { double(target: false, target_type: :type, recorded_changes: :change) } - - it 'calls log_target_from_history' do - expect(hoge).to receive(:log_target_from_history).with(log.target_type, log.recorded_changes) - end - end - end end From c36262c914ba28a9d65511e8e438f8cc85e59dc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Aug 2022 03:57:01 +0900 Subject: [PATCH 103/280] Bump oj from 3.13.20 to 3.13.21 (#19031) Bumps [oj](https://github.com/ohler55/oj) from 3.13.20 to 3.13.21. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.20...v3.13.21) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 076cc2a0d..7843c0c04 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -422,7 +422,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.20) + oj (3.13.21) omniauth (1.9.2) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From 3c79ccb7e36f2a1f291374a0a57e4c24af4ef0bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Aug 2022 03:57:41 +0900 Subject: [PATCH 104/280] Bump addressable from 2.8.0 to 2.8.1 (#19033) Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.8.0 to 2.8.1. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.8.0...addressable-2.8.1) --- updated-dependencies: - dependency-name: addressable dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7843c0c04..13357f600 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,8 +75,8 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) aes_key_wrap (1.1.0) airbrussh (1.4.1) sshkit (>= 1.6.1, != 1.7.0) @@ -478,7 +478,7 @@ GEM pry (>= 0.13, < 0.15) pry-rails (0.3.9) pry (>= 0.10.4) - public_suffix (4.0.7) + public_suffix (5.0.0) puma (5.6.5) nio4r (~> 2.0) pundit (2.2.0) From d696f729f1dc27c9d92b896c651e1ea73bf93d75 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 23:27:10 +0200 Subject: [PATCH 105/280] Add meta tag for official iOS app (#16599) --- app/views/layouts/application.html.haml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index bf164223c..3e50de3fb 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -23,6 +23,7 @@ %link{ rel: 'manifest', href: manifest_path(format: :json) }/ %meta{ name: 'theme-color', content: '#6364FF' }/ %meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/ + %meta{ name: 'apple-itunes-app', content: 'app-id=1571998974' }/ %title= content_for?(:page_title) ? safe_join([yield(:page_title).chomp.html_safe, title], ' - ') : title From 5b0e8cc92b9ca0ab0dc24366d95f67a88c470173 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 23:33:34 +0200 Subject: [PATCH 106/280] Add ability to select all accounts matching search for batch actions (#19053) --- app/controllers/admin/accounts_controller.rb | 6 ++- app/javascript/packs/admin.js | 53 ++++++++++++++++++++ app/javascript/styles/mastodon/tables.scss | 49 ++++++++++++++++++ app/models/custom_filter_status.rb | 2 +- app/models/form/account_batch.rb | 13 ++++- app/views/admin/accounts/index.html.haml | 9 ++++ config/locales/en.yml | 10 ++++ 7 files changed, 138 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index 46c9aba91..40bf685c5 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -16,7 +16,11 @@ module Admin def batch authorize :account, :index? - @form = Form::AccountBatch.new(form_account_batch_params.merge(current_account: current_account, action: action_from_button)) + @form = Form::AccountBatch.new(form_account_batch_params) + @form.current_account = current_account + @form.action = action_from_button + @form.select_all_matching = params[:select_all_matching] + @form.query = filtered_accounts @form.save rescue ActionController::ParameterMissing flash[:alert] = I18n.t('admin.accounts.no_account_selected') diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js index a3ed1ffed..b733d6b18 100644 --- a/app/javascript/packs/admin.js +++ b/app/javascript/packs/admin.js @@ -4,18 +4,71 @@ import ready from '../mastodon/ready'; const batchCheckboxClassName = '.batch-checkbox input[type="checkbox"]'; +const showSelectAll = () => { + const selectAllMatchingElement = document.querySelector('.batch-table__select-all'); + selectAllMatchingElement.classList.add('active'); +}; + +const hideSelectAll = () => { + const selectAllMatchingElement = document.querySelector('.batch-table__select-all'); + const hiddenField = document.querySelector('#select_all_matching'); + const selectedMsg = document.querySelector('.batch-table__select-all .selected'); + const notSelectedMsg = document.querySelector('.batch-table__select-all .not-selected'); + + selectAllMatchingElement.classList.remove('active'); + selectedMsg.classList.remove('active'); + notSelectedMsg.classList.add('active'); + hiddenField.value = '0'; +}; + delegate(document, '#batch_checkbox_all', 'change', ({ target }) => { + const selectAllMatchingElement = document.querySelector('.batch-table__select-all'); + [].forEach.call(document.querySelectorAll(batchCheckboxClassName), (content) => { content.checked = target.checked; }); + + if (selectAllMatchingElement) { + if (target.checked) { + showSelectAll(); + } else { + hideSelectAll(); + } + } +}); + +delegate(document, '.batch-table__select-all button', 'click', () => { + const hiddenField = document.querySelector('#select_all_matching'); + const active = hiddenField.value === '1'; + const selectedMsg = document.querySelector('.batch-table__select-all .selected'); + const notSelectedMsg = document.querySelector('.batch-table__select-all .not-selected'); + + if (active) { + hiddenField.value = '0'; + selectedMsg.classList.remove('active'); + notSelectedMsg.classList.add('active'); + } else { + hiddenField.value = '1'; + notSelectedMsg.classList.remove('active'); + selectedMsg.classList.add('active'); + } }); delegate(document, batchCheckboxClassName, 'change', () => { const checkAllElement = document.querySelector('#batch_checkbox_all'); + const selectAllMatchingElement = document.querySelector('.batch-table__select-all'); if (checkAllElement) { checkAllElement.checked = [].every.call(document.querySelectorAll(batchCheckboxClassName), (content) => content.checked); checkAllElement.indeterminate = !checkAllElement.checked && [].some.call(document.querySelectorAll(batchCheckboxClassName), (content) => content.checked); + + if (selectAllMatchingElement) { + if (checkAllElement.checked) { + showSelectAll(); + } else { + hideSelectAll(); + } + } } }); diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index 431b8a73a..39211910f 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -190,6 +190,55 @@ a.table-action-link { } } + &__select-all { + background: $ui-base-color; + height: 47px; + align-items: center; + justify-content: center; + border: 1px solid darken($ui-base-color, 8%); + border-top: 0; + color: $secondary-text-color; + display: none; + + &.active { + display: flex; + } + + .selected, + .not-selected { + display: none; + + &.active { + display: block; + } + } + + strong { + font-weight: 700; + } + + span { + padding: 8px; + display: inline-block; + } + + button { + background: transparent; + border: 0; + font: inherit; + color: $highlight-text-color; + border-radius: 4px; + font-weight: 700; + padding: 8px; + + &:hover, + &:focus, + &:active { + background: lighten($ui-base-color, 8%); + } + } + } + &__form { padding: 16px; border: 1px solid darken($ui-base-color, 8%); diff --git a/app/models/custom_filter_status.rb b/app/models/custom_filter_status.rb index b6bea1394..e748d6963 100644 --- a/app/models/custom_filter_status.rb +++ b/app/models/custom_filter_status.rb @@ -5,7 +5,7 @@ # # id :bigint(8) not null, primary key # custom_filter_id :bigint(8) not null -# status_id :bigint(8) default(""), not null +# status_id :bigint(8) not null # created_at :datetime not null # updated_at :datetime not null # diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb index 98f2cad3e..5cfcf7205 100644 --- a/app/models/form/account_batch.rb +++ b/app/models/form/account_batch.rb @@ -6,7 +6,8 @@ class Form::AccountBatch include AccountableConcern include Payloadable - attr_accessor :account_ids, :action, :current_account + attr_accessor :account_ids, :action, :current_account, + :select_all_matching, :query def save case action @@ -60,7 +61,11 @@ class Form::AccountBatch end def accounts - Account.where(id: account_ids) + if select_all_matching? + query + else + Account.where(id: account_ids) + end end def approve! @@ -118,4 +123,8 @@ class Form::AccountBatch log_action(:approve, account.user) account.user.approve! end + + def select_all_matching? + select_all_matching == '1' + end end diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index cb378f0ed..670a09a2d 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -37,6 +37,7 @@ = form_for(@form, url: batch_admin_accounts_path) do |f| = hidden_field_tag :page, params[:page] || 1 + = hidden_field_tag :select_all_matching, '0' - AccountFilter::KEYS.each do |key| = hidden_field_tag key, params[key] if params[key].present? @@ -52,6 +53,14 @@ = f.button safe_join([fa_icon('times'), t('admin.accounts.reject')]), name: :reject, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } = f.button safe_join([fa_icon('lock'), t('admin.accounts.perform_full_suspension')]), name: :suspend, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } + - if true || @accounts.total_count > @accounts.size + .batch-table__select-all + .not-selected.active + %span= t('generic.all_items_on_page_selected_html', count: @accounts.size) + %button{ type: 'button' }= t('generic.select_all_matching_items', count: @accounts.total_count) + .selected + %span= t('generic.all_matching_items_selected_html', count: @accounts.total_count) + %button{ type: 'button' }= t('generic.deselect') .batch-table__body - if @accounts.empty? = nothing_here 'nothing-here--under-tabs' diff --git a/config/locales/en.yml b/config/locales/en.yml index 5c309ab11..6aa87e4a0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1227,12 +1227,22 @@ en: trending_now: Trending now generic: all: All + all_items_on_page_selected_html: + one: "%{count} item on this page is selected." + other: All %{count} items on this page are selected. + all_matching_items_selected_html: + one: "%{count} item matching your search is selected." + other: All %{count} items matching your search are selected. changes_saved_msg: Changes successfully saved! copy: Copy delete: Delete + deselect: Deselect all none: None order_by: Order by save_changes: Save changes + select_all_matching_items: + one: Select %{count} item matching your search. + other: Select all %{count} items matching your search. today: today validation_errors: one: Something isn't quite right yet! Please review the error below From 0b3e4fd5de392969b624719b2eb3f86277b6ac1f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 23:38:22 +0200 Subject: [PATCH 107/280] Remove digest e-mails (#17985) * Remove digest e-mails * Remove digest-related code --- .../settings/preferences_controller.rb | 2 +- app/mailers/notification_mailer.rb | 18 -------- app/models/user.rb | 4 -- .../notification_mailer/digest.html.haml | 44 ------------------- app/views/notification_mailer/digest.text.erb | 15 ------- .../preferences/notifications/show.html.haml | 4 -- app/workers/digest_mailer_worker.rb | 21 --------- app/workers/scheduler/email_scheduler.rb | 25 ----------- config/locales/en.yml | 11 ----- config/sidekiq.yml | 4 -- spec/mailers/notification_mailer_spec.rb | 31 ------------- spec/workers/digest_mailer_worker_spec.rb | 36 --------------- 12 files changed, 1 insertion(+), 214 deletions(-) delete mode 100644 app/views/notification_mailer/digest.html.haml delete mode 100644 app/views/notification_mailer/digest.text.erb delete mode 100644 app/workers/digest_mailer_worker.rb delete mode 100644 app/workers/scheduler/email_scheduler.rb delete mode 100644 spec/workers/digest_mailer_worker_spec.rb diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index bfe651bc6..f5d5c1244 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -55,7 +55,7 @@ class Settings::PreferencesController < Settings::BaseController :setting_trends, :setting_crop_images, :setting_always_send_emails, - notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag appeal), + notification_emails: %i(follow follow_request reblog favourite mention report pending_account trending_tag appeal), interactions: %i(must_be_follower must_be_following must_be_following_dm) ) end diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index 9e683b6a1..ab73826ab 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -66,24 +66,6 @@ class NotificationMailer < ApplicationMailer end end - def digest(recipient, **opts) - return unless recipient.user.functional? - - @me = recipient - @since = opts[:since] || [@me.user.last_emailed_at, (@me.user.current_sign_in_at + 1.day)].compact.max - @notifications_count = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since).count - - return if @notifications_count.zero? - - @notifications = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since).limit(40) - @follows_since = Notification.where(account: @me, activity_type: 'Follow').where('created_at > ?', @since).count - - locale_for_account(@me) do - mail to: @me.user.email, - subject: I18n.t(:subject, scope: [:notification_mailer, :digest], count: @notifications_count) - end - end - private def thread_by_conversation(conversation) diff --git a/app/models/user.rb b/app/models/user.rb index 18b9d5928..342f5e6cc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -289,10 +289,6 @@ class User < ApplicationRecord settings.default_privacy || (account.locked? ? 'private' : 'public') end - def allows_digest_emails? - settings.notification_emails['digest'] - end - def allows_report_emails? settings.notification_emails['report'] end diff --git a/app/views/notification_mailer/digest.html.haml b/app/views/notification_mailer/digest.html.haml deleted file mode 100644 index a94ace228..000000000 --- a/app/views/notification_mailer/digest.html.haml +++ /dev/null @@ -1,44 +0,0 @@ -%table.email-table{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.email-body - .email-container - %table.content-section{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.content-cell.darker.hero-with-button - .email-row - .col-6 - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.text-center.padded - %h1= t 'notification_mailer.digest.title' - %p.lead= t('notification_mailer.digest.body', since: l((@me.user_current_sign_in_at || @since).to_date, format: :short), instance: site_hostname) - %table.button{ align: 'center', cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.button-primary - = link_to web_url do - %span= t 'notification_mailer.digest.action' - -- @notifications.each_with_index do |n, i| - = render 'status', status: n.target_status, i: i - -- unless @follows_since.zero? - %table.email-table{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.email-body - .email-container - %table.content-section{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.content-cell.content-start.border-top - .email-row - .col-6 - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.text-center - %p= t('notification_mailer.digest.new_followers_summary', count: @follows_since) diff --git a/app/views/notification_mailer/digest.text.erb b/app/views/notification_mailer/digest.text.erb deleted file mode 100644 index 0f84a4ef0..000000000 --- a/app/views/notification_mailer/digest.text.erb +++ /dev/null @@ -1,15 +0,0 @@ -<%= raw t('application_mailer.salutation', name: display_name(@me)) %> - -<%= raw t('notification_mailer.digest.body', since: l(@me.user_current_sign_in_at || @since), instance: root_url) %> -<% @notifications.each do |notification| %> - -* <%= raw t('notification_mailer.digest.mention', name: notification.from_account.pretty_acct) %> - - <%= raw extract_status_plain_text(notification.target_status) %> - - <%= raw t('application_mailer.view')%> <%= web_url("statuses/#{notification.target_status.id}") %> -<% end %> -<% if @follows_since > 0 %> - -<%= raw t('notification_mailer.digest.new_followers_summary', count: @follows_since) %> -<% end %> diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml index bc7afb993..f00dbadd4 100644 --- a/app/views/settings/preferences/notifications/show.html.haml +++ b/app/views/settings/preferences/notifications/show.html.haml @@ -26,10 +26,6 @@ .fields-group = f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label - .fields-group - = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff| - = ff.input :digest, as: :boolean, wrapper: :with_label - %h4= t 'notifications.other_settings' .fields-group diff --git a/app/workers/digest_mailer_worker.rb b/app/workers/digest_mailer_worker.rb deleted file mode 100644 index 21f1c357a..000000000 --- a/app/workers/digest_mailer_worker.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -class DigestMailerWorker - include Sidekiq::Worker - - sidekiq_options queue: 'mailers' - - attr_reader :user - - def perform(user_id) - @user = User.find(user_id) - deliver_digest if @user.allows_digest_emails? - end - - private - - def deliver_digest - NotificationMailer.digest(user.account).deliver_now! - user.touch(:last_emailed_at) - end -end diff --git a/app/workers/scheduler/email_scheduler.rb b/app/workers/scheduler/email_scheduler.rb deleted file mode 100644 index c052f2fce..000000000 --- a/app/workers/scheduler/email_scheduler.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::EmailScheduler - include Sidekiq::Worker - - sidekiq_options retry: 0 - - FREQUENCY = 7.days.freeze - SIGN_IN_OFFSET = 1.day.freeze - - def perform - eligible_users.reorder(nil).find_each do |user| - next unless user.allows_digest_emails? - DigestMailerWorker.perform_async(user.id) - end - end - - private - - def eligible_users - User.emailable - .where('current_sign_in_at < ?', (FREQUENCY + SIGN_IN_OFFSET).ago) - .where('last_emailed_at IS NULL OR last_emailed_at < ?', FREQUENCY.ago) - end -end diff --git a/config/locales/en.yml b/config/locales/en.yml index 6aa87e4a0..72ebfafba 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1351,17 +1351,6 @@ en: subject: "%{name} submitted a report" sign_up: subject: "%{name} signed up" - digest: - action: View all notifications - body: Here is a brief summary of the messages you missed since your last visit on %{since} - mention: "%{name} mentioned you in:" - new_followers_summary: - one: Also, you have acquired one new follower while being away! Yay! - other: Also, you have acquired %{count} new followers while being away! Amazing! - subject: - one: "1 new notification since your last visit 🐘" - other: "%{count} new notifications since your last visit 🐘" - title: In your absence... favourite: body: 'Your post was favourited by %{name}:' subject: "%{name} favourited your post" diff --git a/config/sidekiq.yml b/config/sidekiq.yml index 2a3871468..9ec6eb5ec 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -49,10 +49,6 @@ cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' class: Scheduler::IpCleanupScheduler queue: scheduler - email_scheduler: - cron: '0 10 * * 2' - class: Scheduler::EmailScheduler - queue: scheduler backup_cleanup_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' class: Scheduler::BackupCleanupScheduler diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 2ca4e26fa..29bdc349b 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -101,35 +101,4 @@ RSpec.describe NotificationMailer, type: :mailer do expect(mail.body.encoded).to match("bob has requested to follow you") end end - - describe 'digest' do - before do - mention = Fabricate(:mention, account: receiver.account, status: foreign_status) - Fabricate(:notification, account: receiver.account, activity: mention) - sender.follow!(receiver.account) - end - - context do - let!(:mail) { NotificationMailer.digest(receiver.account, since: 5.days.ago) } - - include_examples 'localized subject', 'notification_mailer.digest.subject', count: 1, name: 'bob' - - it 'renders the headers' do - expect(mail.subject).to match('notification since your last') - expect(mail.to).to eq([receiver.email]) - end - - it 'renders the body' do - expect(mail.body.encoded).to match('brief summary') - expect(mail.body.encoded).to include 'The body of the foreign status' - expect(mail.body.encoded).to include sender.username - end - end - - it 'includes activities since the receiver last signed in' do - receiver.update!(last_emailed_at: nil, current_sign_in_at: '2000-03-01T00:00:00Z') - mail = NotificationMailer.digest(receiver.account) - expect(mail.body.encoded).to include 'Mar 01, 2000, 00:00' - end - end end diff --git a/spec/workers/digest_mailer_worker_spec.rb b/spec/workers/digest_mailer_worker_spec.rb deleted file mode 100644 index db3b1390d..000000000 --- a/spec/workers/digest_mailer_worker_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe DigestMailerWorker do - describe 'perform' do - let(:user) { Fabricate(:user, last_emailed_at: 3.days.ago) } - - context 'for a user who receives digests' do - it 'sends the email' do - service = double(deliver_now!: nil) - allow(NotificationMailer).to receive(:digest).and_return(service) - update_user_digest_setting(true) - described_class.perform_async(user.id) - - expect(NotificationMailer).to have_received(:digest) - expect(user.reload.last_emailed_at).to be_within(1).of(Time.now.utc) - end - end - - context 'for a user who does not receive digests' do - it 'does not send the email' do - allow(NotificationMailer).to receive(:digest) - update_user_digest_setting(false) - described_class.perform_async(user.id) - - expect(NotificationMailer).not_to have_received(:digest) - expect(user.last_emailed_at).to be_within(1).of(3.days.ago) - end - end - - def update_user_digest_setting(value) - user.settings['notification_emails'] = user.settings['notification_emails'].merge('digest' => value) - end - end -end From af396fa35f589e1f759c7a3a0dad7932f1862309 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 23:38:36 +0200 Subject: [PATCH 108/280] Remove preference to aggregate reblogs in home/list feeds (#18112) --- app/lib/feed_manager.rb | 18 +++++++++--------- .../settings/preferences/other/show.html.haml | 3 --- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 145352fe8..ccff2667b 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -58,7 +58,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_home(account, status, update: false) - return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) + return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: true) trim(:home, account.id) PushUpdateWorker.perform_async(account.id, status.id, "timeline:#{account.id}", { 'update' => update }) if push_update_required?("timeline:#{account.id}") @@ -71,7 +71,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_home(account, status, update: false) - return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) + return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: true) redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -83,7 +83,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_list(list, status, update: false) - return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) + return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: true) trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}", { 'update' => update }) if push_update_required?("timeline:list:#{list.id}") @@ -96,7 +96,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_list(list, status, update: false) - return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) + return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: true) redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -108,7 +108,7 @@ class FeedManager # @return [void] def merge_into_home(from_account, into_account) timeline_key = key(:home, into_account.id) - aggregate = into_account.user&.aggregates_reblogs? + aggregate = true query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -134,7 +134,7 @@ class FeedManager # @return [void] def merge_into_list(from_account, list) timeline_key = key(:list, list.id) - aggregate = list.account.user&.aggregates_reblogs? + aggregate = true query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -163,7 +163,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?) + remove_from_feed(:home, into_account.id, status, aggregate_reblogs: true) end end @@ -176,7 +176,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) + remove_from_feed(:list, list.id, status, aggregate_reblogs: true) end end @@ -235,7 +235,7 @@ class FeedManager # @return [void] def populate_home(account) limit = FeedManager::MAX_ITEMS / 2 - aggregate = account.user&.aggregates_reblogs? + aggregate = true timeline_key = key(:home, account.id) account.statuses.limit(limit).each do |status| diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index 44f4af2eb..379678703 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -10,9 +10,6 @@ .fields-group = f.input :setting_noindex, as: :boolean, wrapper: :with_label - .fields-group - = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true - %h4= t 'preferences.posting_defaults' .fields-row From 1d84cbeaab7cecdfef10f53afe1e708b8a363603 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 26 Aug 2022 02:11:23 +0200 Subject: [PATCH 109/280] Fix "select all matching items" being offered when all items are on the page (#19054) --- app/views/admin/accounts/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index 670a09a2d..f33f788ed 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -53,7 +53,7 @@ = f.button safe_join([fa_icon('times'), t('admin.accounts.reject')]), name: :reject, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } = f.button safe_join([fa_icon('lock'), t('admin.accounts.perform_full_suspension')]), name: :suspend, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } - - if true || @accounts.total_count > @accounts.size + - if @accounts.total_count > @accounts.size .batch-table__select-all .not-selected.active %span= t('generic.all_items_on_page_selected_html', count: @accounts.size) From 1fac99e842c99e8f6aef9429ee1f19c7e63f7b07 Mon Sep 17 00:00:00 2001 From: Shlee Date: Fri, 26 Aug 2022 09:42:46 +0930 Subject: [PATCH 110/280] Add rel="noopener" to links to remote profiles (#19014) * Update timeline_hint.js * Update timeline_hint.js --- app/javascript/mastodon/components/timeline_hint.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/timeline_hint.js b/app/javascript/mastodon/components/timeline_hint.js index fb55a62cc..ac9a79dcc 100644 --- a/app/javascript/mastodon/components/timeline_hint.js +++ b/app/javascript/mastodon/components/timeline_hint.js @@ -6,7 +6,7 @@ const TimelineHint = ({ resource, url }) => (


- +
); From c7147bab908aca4cefd17d527e7cbfe3b6e5d3a6 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 27 Aug 2022 00:45:54 +0200 Subject: [PATCH 111/280] Fix incorrect and slow cache invalidation in ClearDomainMediaService (#19062) Fixes #19060 --- app/services/clear_domain_media_service.rb | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/services/clear_domain_media_service.rb b/app/services/clear_domain_media_service.rb index 704cfb71a..9e70ebe51 100644 --- a/app/services/clear_domain_media_service.rb +++ b/app/services/clear_domain_media_service.rb @@ -10,24 +10,18 @@ class ClearDomainMediaService < BaseService private - def invalidate_association_caches! + def invalidate_association_caches!(status_ids) # Normally, associated models of a status are immutable (except for accounts) # so they are aggressively cached. After updating the media attachments to no # longer point to a local file, we need to clear the cache to make those # changes appear in the API and UI - @affected_status_ids.each { |id| Rails.cache.delete_matched("statuses/#{id}-*") } + Rails.cache.delete_multi(status_ids.map { |id| "statuses/#{id}" }) end def clear_media! - @affected_status_ids = [] - - begin - clear_account_images! - clear_account_attachments! - clear_emojos! - ensure - invalidate_association_caches! - end + clear_account_images! + clear_account_attachments! + clear_emojos! end def clear_account_images! @@ -39,12 +33,18 @@ class ClearDomainMediaService < BaseService end def clear_account_attachments! - media_from_blocked_domain.reorder(nil).find_each do |attachment| - @affected_status_ids << attachment.status_id if attachment.status_id.present? + media_from_blocked_domain.reorder(nil).find_in_batches do |attachments| + affected_status_ids = [] - attachment.file.destroy if attachment.file&.exists? - attachment.type = :unknown - attachment.save + attachments.each do |attachment| + affected_status_ids << attachment.status_id if attachment.status_id.present? + + attachment.file.destroy if attachment.file&.exists? + attachment.type = :unknown + attachment.save + end + + invalidate_association_caches!(affected_status_ids) unless affected_status_ids.empty? end end From 54d9a9c18a74a1ec766d8f611ad3ee11ab4c5422 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Sat, 27 Aug 2022 22:17:27 +0900 Subject: [PATCH 112/280] Fix react warning on notifications column (#1832) --- .../glitch/features/notifications/index.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/features/notifications/index.js b/app/javascript/flavours/glitch/features/notifications/index.js index 075e729b1..2682dd29b 100644 --- a/app/javascript/flavours/glitch/features/notifications/index.js +++ b/app/javascript/flavours/glitch/features/notifications/index.js @@ -283,13 +283,14 @@ class Notifications extends React.PureComponent { if (canMarkAsRead) { extraButtons.push( + , ); } @@ -306,13 +307,14 @@ class Notifications extends React.PureComponent { extraButtons.push( + , ); const notifCleaningDrawer = ( @@ -323,6 +325,12 @@ class Notifications extends React.PureComponent {
); + const extraButton = ( + <> + {extraButtons} + + ); + return ( From 159b4edeef1ebdb70cc8d7d1316184252aef00a3 Mon Sep 17 00:00:00 2001 From: Shlee Date: Sun, 28 Aug 2022 01:10:46 +0930 Subject: [PATCH 113/280] Update docker-compose.yml (#19063) --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index d86cb55d2..c534286c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: redis: restart: always - image: redis:6-alpine + image: redis:7-alpine networks: - internal_network healthcheck: From ff19dad5a05dba689122b0427886c8375491571a Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 27 Aug 2022 17:41:20 +0200 Subject: [PATCH 114/280] Fix crash when adding a new filter (#18894) Fixes #18742 --- ...71123_fix_custom_filter_keywords_id_seq.rb | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb diff --git a/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb b/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb new file mode 100644 index 000000000..7ed34a3ef --- /dev/null +++ b/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class FixCustomFilterKeywordsIdSeq < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def up + # 20220613110711 manually inserts items with set `id` in the database, but + # we also need to bump the sequence number, otherwise + safety_assured do + execute <<-SQL.squish + BEGIN; + LOCK TABLE custom_filter_keywords IN EXCLUSIVE MODE; + SELECT setval('custom_filter_keywords_id_seq'::regclass, id) FROM custom_filter_keywords ORDER BY id DESC LIMIT 1; + COMMIT; + SQL + end + end + + def down; end +end From b399d79545e5e5430cb9d6a2c936efc244b69a75 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 27 Aug 2022 20:56:47 +0200 Subject: [PATCH 115/280] Add admin API for managing IP blocks (#19065) --- .../api/v1/admin/ip_blocks_controller.rb | 99 +++++++++++++++++++ app/models/ip_block.rb | 3 +- app/policies/ip_block_policy.rb | 4 + .../rest/admin/ip_block_serializer.rb | 14 +++ config/routes.rb | 1 + 5 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 app/controllers/api/v1/admin/ip_blocks_controller.rb create mode 100644 app/serializers/rest/admin/ip_block_serializer.rb diff --git a/app/controllers/api/v1/admin/ip_blocks_controller.rb b/app/controllers/api/v1/admin/ip_blocks_controller.rb new file mode 100644 index 000000000..f13d63267 --- /dev/null +++ b/app/controllers/api/v1/admin/ip_blocks_controller.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +class Api::V1::Admin::IpBlocksController < Api::BaseController + include Authorization + include AccountableConcern + + LIMIT = 100 + + before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:ip_blocks' }, only: [:index, :show] + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:ip_blocks' }, except: [:index, :show] + before_action :set_ip_blocks, only: :index + before_action :set_ip_block, only: [:show, :update, :destroy] + + after_action :verify_authorized + after_action :insert_pagination_headers, only: :index + + PAGINATION_PARAMS = %i( + limit + ).freeze + + def create + authorize :ip_block, :create? + + @ip_block = IpBlock.create!(resource_params) + log_action :create, @ip_block + + render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + end + + def index + authorize :ip_block, :index? + render json: @ip_blocks, each_serializer: REST::Admin::IpBlockSerializer + end + + def show + authorize @ip_block, :show? + render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + end + + def update + authorize @ip_block, :update? + + @ip_block.update(resource_params) + log_action :update, @ip_block + + render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + end + + def destroy + authorize @ip_block, :destroy? + + @ip_block.destroy! + log_action :destroy, @ip_block + + render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + end + + private + + def set_ip_blocks + @ip_blocks = IpBlock.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_ip_block + @ip_block = IpBlock.find(params[:id]) + end + + def resource_params + params.permit(:ip, :severity, :comment, :expires_in) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_admin_ip_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? + end + + def prev_path + api_v1_admin_ip_blocks_url(pagination_params(min_id: pagination_since_id)) unless @ip_blocks.empty? + end + + def pagination_max_id + @ip_blocks.last.id + end + + def pagination_since_id + @ip_blocks.first.id + end + + def records_continue? + @ip_blocks.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end +end diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index f40c8a0b1..8666f4248 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -16,6 +16,7 @@ class IpBlock < ApplicationRecord CACHE_KEY = 'blocked_ips' include Expireable + include Paginable enum severity: { sign_up_requires_approval: 5000, @@ -28,7 +29,7 @@ class IpBlock < ApplicationRecord after_commit :reset_cache def to_log_human_identifier - "#{record.ip}/#{record.ip.prefix}" + "#{ip}/#{ip.prefix}" end class << self diff --git a/app/policies/ip_block_policy.rb b/app/policies/ip_block_policy.rb index 1abc97ad8..2986a4fdb 100644 --- a/app/policies/ip_block_policy.rb +++ b/app/policies/ip_block_policy.rb @@ -9,6 +9,10 @@ class IpBlockPolicy < ApplicationPolicy role.can?(:manage_blocks) end + def update? + role.can?(:manage_blocks) + end + def destroy? role.can?(:manage_blocks) end diff --git a/app/serializers/rest/admin/ip_block_serializer.rb b/app/serializers/rest/admin/ip_block_serializer.rb new file mode 100644 index 000000000..6a38f8b56 --- /dev/null +++ b/app/serializers/rest/admin/ip_block_serializer.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class REST::Admin::IpBlockSerializer < ActiveModel::Serializer + attributes :id, :ip, :severity, :comment, + :created_at, :expires_at + + def id + object.id.to_s + end + + def ip + "#{object.ip}/#{object.ip.prefix}" + end +end diff --git a/config/routes.rb b/config/routes.rb index dff0add3a..1168c9aee 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -591,6 +591,7 @@ Rails.application.routes.draw do resources :domain_allows, only: [:index, :show, :create, :destroy] resources :domain_blocks, only: [:index, :show, :update, :create, :destroy] + resources :ip_blocks, only: [:index, :show, :update, :create, :destroy] namespace :trends do resources :tags, only: [:index] From c556c3a0d1e54a6b07bbdd8f76cbb43672a91fd1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 03:31:54 +0200 Subject: [PATCH 116/280] Add admin API for managing canonical e-mail blocks (#19067) --- .../canonical_email_blocks_controller.rb | 99 +++++++++++++++++++ app/helpers/admin/action_logs_helper.rb | 8 +- app/models/admin/action_log_filter.rb | 5 + app/models/canonical_email_block.rb | 17 ++-- app/policies/canonical_email_block_policy.rb | 23 +++++ .../admin/canonical_email_block_serializer.rb | 9 ++ config/locales/en.yml | 6 ++ config/routes.rb | 6 ++ ..._change_canonical_email_blocks_nullable.rb | 5 + db/schema.rb | 4 +- lib/mastodon/canonical_email_blocks_cli.rb | 31 ++---- 11 files changed, 177 insertions(+), 36 deletions(-) create mode 100644 app/controllers/api/v1/admin/canonical_email_blocks_controller.rb create mode 100644 app/policies/canonical_email_block_policy.rb create mode 100644 app/serializers/rest/admin/canonical_email_block_serializer.rb create mode 100644 db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb diff --git a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb new file mode 100644 index 000000000..bf8a6a131 --- /dev/null +++ b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController + include Authorization + include AccountableConcern + + LIMIT = 100 + + before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:canonical_email_blocks' }, only: [:index, :show, :test] + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:canonical_email_blocks' }, except: [:index, :show, :test] + + before_action :set_canonical_email_blocks, only: :index + before_action :set_canonical_email_blocks_from_test, only: [:test] + before_action :set_canonical_email_block, only: [:show, :destroy] + + after_action :verify_authorized + after_action :insert_pagination_headers, only: :index + + PAGINATION_PARAMS = %i(limit).freeze + + def index + authorize :canonical_email_block, :index? + render json: @canonical_email_blocks, each_serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + def show + authorize @canonical_email_block, :show? + render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + def test + authorize :canonical_email_block, :test? + render json: @canonical_email_blocks, each_serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + def create + authorize :canonical_email_block, :create? + + @canonical_email_block = CanonicalEmailBlock.create!(resource_params) + log_action :create, @canonical_email_block + + render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + def destroy + authorize @canonical_email_block, :destroy? + + @canonical_email_block.destroy! + log_action :destroy, @canonical_email_block + + render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + private + + def resource_params + params.permit(:canonical_email_hash, :email) + end + + def set_canonical_email_blocks + @canonical_email_blocks = CanonicalEmailBlock.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_canonical_email_blocks_from_test + @canonical_email_blocks = CanonicalEmailBlock.matching_email(params[:email]) + end + + def set_canonical_email_block + @canonical_email_block = CanonicalEmailBlock.find(params[:id]) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_admin_canonical_email_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? + end + + def prev_path + api_v1_admin_canonical_email_blocks_url(pagination_params(min_id: pagination_since_id)) unless @canonical_email_blocks.empty? + end + + def pagination_max_id + @canonical_email_blocks.last.id + end + + def pagination_since_id + @canonical_email_blocks.first.id + end + + def records_continue? + @canonical_email_blocks.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end +end diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index 3e9fe17f4..fd1977ac5 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -9,8 +9,6 @@ module Admin::ActionLogsHelper link_to log.human_identifier, admin_account_path(log.route_param) when 'UserRole' link_to log.human_identifier, admin_roles_path(log.target_id) - when 'CustomEmoji' - log.human_identifier when 'Report' link_to "##{log.human_identifier}", admin_report_path(log.target_id) when 'DomainBlock', 'DomainAllow', 'EmailDomainBlock', 'UnavailableDomain' @@ -21,10 +19,10 @@ module Admin::ActionLogsHelper link_to log.human_identifier, admin_account_path(log.target_id) when 'Announcement' link_to truncate(log.human_identifier), edit_admin_announcement_path(log.target_id) - when 'IpBlock' - log.human_identifier - when 'Instance' + when 'IpBlock', 'Instance', 'CustomEmoji' log.human_identifier + when 'CanonicalEmailBlock' + content_tag(:samp, log.human_identifier[0...7], title: log.human_identifier) when 'Appeal' link_to log.human_identifier, disputes_strike_path(log.route_param) end diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index 6382cd782..c7a7e1a4c 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -22,18 +22,22 @@ class Admin::ActionLogFilter create_domain_allow: { target_type: 'DomainAllow', action: 'create' }.freeze, create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze, create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze, + create_ip_block: { target_type: 'IpBlock', action: 'create' }.freeze, create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze, create_user_role: { target_type: 'UserRole', action: 'create' }.freeze, + create_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'create' }.freeze, demote_user: { target_type: 'User', action: 'demote' }.freeze, destroy_announcement: { target_type: 'Announcement', action: 'destroy' }.freeze, destroy_custom_emoji: { target_type: 'CustomEmoji', action: 'destroy' }.freeze, destroy_domain_allow: { target_type: 'DomainAllow', action: 'destroy' }.freeze, destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze, + destroy_ip_block: { target_type: 'IpBlock', action: 'destroy' }.freeze, destroy_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze, destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze, destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze, destroy_status: { target_type: 'Status', action: 'destroy' }.freeze, destroy_user_role: { target_type: 'UserRole', action: 'destroy' }.freeze, + destroy_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'destroy' }.freeze, disable_2fa_user: { target_type: 'User', action: 'disable' }.freeze, disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze, disable_user: { target_type: 'User', action: 'disable' }.freeze, @@ -56,6 +60,7 @@ class Admin::ActionLogFilter update_custom_emoji: { target_type: 'CustomEmoji', action: 'update' }.freeze, update_status: { target_type: 'Status', action: 'update' }.freeze, update_user_role: { target_type: 'UserRole', action: 'update' }.freeze, + update_ip_block: { target_type: 'IpBlock', action: 'update' }.freeze, unblock_email_account: { target_type: 'Account', action: 'unblock_email' }.freeze, }.freeze diff --git a/app/models/canonical_email_block.rb b/app/models/canonical_email_block.rb index 94781386c..1eb69ac67 100644 --- a/app/models/canonical_email_block.rb +++ b/app/models/canonical_email_block.rb @@ -5,27 +5,30 @@ # # id :bigint(8) not null, primary key # canonical_email_hash :string default(""), not null -# reference_account_id :bigint(8) not null +# reference_account_id :bigint(8) # created_at :datetime not null # updated_at :datetime not null # class CanonicalEmailBlock < ApplicationRecord include EmailHelper + include Paginable - belongs_to :reference_account, class_name: 'Account' + belongs_to :reference_account, class_name: 'Account', optional: true validates :canonical_email_hash, presence: true, uniqueness: true + scope :matching_email, ->(email) { where(canonical_email_hash: email_to_canonical_email_hash(email)) } + + def to_log_human_identifier + canonical_email_hash + end + def email=(email) self.canonical_email_hash = email_to_canonical_email_hash(email) end def self.block?(email) - where(canonical_email_hash: email_to_canonical_email_hash(email)).exists? - end - - def self.find_blocks(email) - where(canonical_email_hash: email_to_canonical_email_hash(email)) + matching_email(email).exists? end end diff --git a/app/policies/canonical_email_block_policy.rb b/app/policies/canonical_email_block_policy.rb new file mode 100644 index 000000000..8d76075c9 --- /dev/null +++ b/app/policies/canonical_email_block_policy.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class CanonicalEmailBlockPolicy < ApplicationPolicy + def index? + role.can?(:manage_blocks) + end + + def show? + role.can?(:manage_blocks) + end + + def test? + role.can?(:manage_blocks) + end + + def create? + role.can?(:manage_blocks) + end + + def destroy? + role.can?(:manage_blocks) + end +end diff --git a/app/serializers/rest/admin/canonical_email_block_serializer.rb b/app/serializers/rest/admin/canonical_email_block_serializer.rb new file mode 100644 index 000000000..fe385940a --- /dev/null +++ b/app/serializers/rest/admin/canonical_email_block_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::Admin::CanonicalEmailBlockSerializer < ActiveModel::Serializer + attributes :id, :canonical_email_hash + + def id + object.id.to_s + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 72ebfafba..0b721c163 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -239,6 +239,7 @@ en: confirm_user: Confirm User create_account_warning: Create Warning create_announcement: Create Announcement + create_canonical_email_block: Create E-mail Block create_custom_emoji: Create Custom Emoji create_domain_allow: Create Domain Allow create_domain_block: Create Domain Block @@ -248,6 +249,7 @@ en: create_user_role: Create Role demote_user: Demote User destroy_announcement: Delete Announcement + destroy_canonical_email_block: Delete E-mail Block destroy_custom_emoji: Delete Custom Emoji destroy_domain_allow: Delete Domain Allow destroy_domain_block: Delete Domain Block @@ -283,6 +285,7 @@ en: update_announcement: Update Announcement update_custom_emoji: Update Custom Emoji update_domain_block: Update Domain Block + update_ip_block: Update IP rule update_status: Update Post update_user_role: Update Role actions: @@ -294,6 +297,7 @@ en: confirm_user_html: "%{name} confirmed e-mail address of user %{target}" create_account_warning_html: "%{name} sent a warning to %{target}" create_announcement_html: "%{name} created new announcement %{target}" + create_canonical_email_block_html: "%{name} blocked e-mail with the hash %{target}" create_custom_emoji_html: "%{name} uploaded new emoji %{target}" create_domain_allow_html: "%{name} allowed federation with domain %{target}" create_domain_block_html: "%{name} blocked domain %{target}" @@ -303,6 +307,7 @@ en: create_user_role_html: "%{name} created %{target} role" demote_user_html: "%{name} demoted user %{target}" destroy_announcement_html: "%{name} deleted announcement %{target}" + destroy_canonical_email_block_html: "%{name} unblocked e-mail with the hash %{target}" destroy_custom_emoji_html: "%{name} deleted emoji %{target}" destroy_domain_allow_html: "%{name} disallowed federation with domain %{target}" destroy_domain_block_html: "%{name} unblocked domain %{target}" @@ -338,6 +343,7 @@ en: update_announcement_html: "%{name} updated announcement %{target}" update_custom_emoji_html: "%{name} updated emoji %{target}" update_domain_block_html: "%{name} updated domain block for %{target}" + update_ip_block_html: "%{name} changed rule for IP %{target}" update_status_html: "%{name} updated post by %{target}" update_user_role_html: "%{name} changed %{target} role" empty: No logs found. diff --git a/config/routes.rb b/config/routes.rb index 1168c9aee..8694a6436 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -602,6 +602,12 @@ Rails.application.routes.draw do post :measures, to: 'measures#create' post :dimensions, to: 'dimensions#create' post :retention, to: 'retention#create' + + resources :canonical_email_blocks, only: [:index, :create, :show, :destroy] do + collection do + post :test + end + end end end diff --git a/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb b/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb new file mode 100644 index 000000000..5b3ec4727 --- /dev/null +++ b/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb @@ -0,0 +1,5 @@ +class ChangeCanonicalEmailBlocksNullable < ActiveRecord::Migration[6.1] + def change + safety_assured { change_column :canonical_email_blocks, :reference_account_id, :bigint, null: true, default: nil } + end +end diff --git a/db/schema.rb b/db/schema.rb index 83fd9549c..db22f538a 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: 2022_08_24_164532) do +ActiveRecord::Schema.define(version: 2022_08_27_195229) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -296,7 +296,7 @@ ActiveRecord::Schema.define(version: 2022_08_24_164532) do create_table "canonical_email_blocks", force: :cascade do |t| t.string "canonical_email_hash", default: "", null: false - t.bigint "reference_account_id", null: false + t.bigint "reference_account_id" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.index ["canonical_email_hash"], name: "index_canonical_email_blocks_on_canonical_email_hash", unique: true diff --git a/lib/mastodon/canonical_email_blocks_cli.rb b/lib/mastodon/canonical_email_blocks_cli.rb index 64b72e603..ec228d466 100644 --- a/lib/mastodon/canonical_email_blocks_cli.rb +++ b/lib/mastodon/canonical_email_blocks_cli.rb @@ -18,17 +18,15 @@ module Mastodon When suspending a local user, a hash of a "canonical" version of their e-mail address is stored to prevent them from signing up again. - This command can be used to find whether a known email address is blocked, - and if so, which account it was attached to. + This command can be used to find whether a known email address is blocked. LONG_DESC def find(email) - accts = CanonicalEmailBlock.find_blocks(email).map(&:reference_account).map(&:acct).to_a + accts = CanonicalEmailBlock.matching_email(email) + if accts.empty? - say("#{email} is not blocked", :yellow) + say("#{email} is not blocked", :green) else - accts.each do |acct| - say(acct, :white) - end + say("#{email} is blocked", :red) end end @@ -40,24 +38,13 @@ module Mastodon This command allows removing a canonical email block. LONG_DESC def remove(email) - blocks = CanonicalEmailBlock.find_blocks(email) + blocks = CanonicalEmailBlock.matching_email(email) + if blocks.empty? - say("#{email} is not blocked", :yellow) + say("#{email} is not blocked", :green) else blocks.destroy_all - say("Removed canonical email block for #{email}", :green) - end - end - - private - - def color(processed, failed) - if !processed.zero? && failed.zero? - :green - elsif failed.zero? - :yellow - else - :red + say("Unblocked #{email}", :green) end end end From 2a7766dcc958ad18df761de50f9da5164f1a2e8f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 03:37:55 +0200 Subject: [PATCH 117/280] Add admin API for managing e-mail domain blocks (#19066) --- .../admin/email_domain_blocks_controller.rb | 90 +++++++++++++++++++ app/models/email_domain_block.rb | 1 + .../admin/email_domain_block_serializer.rb | 9 ++ config/routes.rb | 1 + 4 files changed, 101 insertions(+) create mode 100644 app/controllers/api/v1/admin/email_domain_blocks_controller.rb create mode 100644 app/serializers/rest/admin/email_domain_block_serializer.rb diff --git a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb new file mode 100644 index 000000000..ac16f70b0 --- /dev/null +++ b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb @@ -0,0 +1,90 @@ +# frozen_string_literal: true + +class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController + include Authorization + include AccountableConcern + + LIMIT = 100 + + before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:email_domain_blocks' }, only: [:index, :show] + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:email_domain_blocks' }, except: [:index, :show] + before_action :set_email_domain_blocks, only: :index + before_action :set_email_domain_block, only: [:show, :destroy] + + after_action :verify_authorized + after_action :insert_pagination_headers, only: :index + + PAGINATION_PARAMS = %i( + limit + ).freeze + + def create + authorize :email_domain_block, :create? + + @email_domain_block = EmailDomainBlock.create!(resource_params) + log_action :create, @email_domain_block + + render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer + end + + def index + authorize :email_domain_block, :index? + render json: @email_domain_blocks, each_serializer: REST::Admin::EmailDomainBlockSerializer + end + + def show + authorize @email_domain_block, :show? + render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer + end + + def destroy + authorize @email_domain_block, :destroy? + + @email_domain_block.destroy! + log_action :destroy, @email_domain_block + + render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer + end + + private + + def set_email_domain_blocks + @email_domain_blocks = EmailDomainBlock.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_email_domain_block + @email_domain_block = EmailDomainBlock.find(params[:id]) + end + + def resource_params + params.permit(:domain) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_admin_email_domain_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? + end + + def prev_path + api_v1_admin_email_domain_blocks_url(pagination_params(min_id: pagination_since_id)) unless @email_domain_blocks.empty? + end + + def pagination_max_id + @email_domain_blocks.last.id + end + + def pagination_since_id + @email_domain_blocks.first.id + end + + def records_continue? + @email_domain_blocks.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end +end diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index 661f6727d..10a0e5102 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -17,6 +17,7 @@ class EmailDomainBlock < ApplicationRecord ) include DomainNormalizable + include Paginable belongs_to :parent, class_name: 'EmailDomainBlock', optional: true has_many :children, class_name: 'EmailDomainBlock', foreign_key: :parent_id, inverse_of: :parent, dependent: :destroy diff --git a/app/serializers/rest/admin/email_domain_block_serializer.rb b/app/serializers/rest/admin/email_domain_block_serializer.rb new file mode 100644 index 000000000..a026ff680 --- /dev/null +++ b/app/serializers/rest/admin/email_domain_block_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::Admin::EmailDomainBlockSerializer < ActiveModel::Serializer + attributes :id, :domain, :created_at, :history + + def id + object.id.to_s + end +end diff --git a/config/routes.rb b/config/routes.rb index 8694a6436..13a4a1618 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -591,6 +591,7 @@ Rails.application.routes.draw do resources :domain_allows, only: [:index, :show, :create, :destroy] resources :domain_blocks, only: [:index, :show, :update, :create, :destroy] + resources :email_domain_blocks, only: [:index, :show, :create, :destroy] resources :ip_blocks, only: [:index, :show, :update, :create, :destroy] namespace :trends do From c99c106ef08d44591d6b7802ea6f9914ea2842bd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 03:45:07 +0200 Subject: [PATCH 118/280] Change following and followers API to be accessible without being logged in (#18964) --- app/controllers/api/v1/accounts/follower_accounts_controller.rb | 2 +- .../api/v1/accounts/following_accounts_controller.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/accounts/follower_accounts_controller.rb b/app/controllers/api/v1/accounts/follower_accounts_controller.rb index a665863eb..b61de13b9 100644 --- a/app/controllers/api/v1/accounts/follower_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/follower_accounts_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::Accounts::FollowerAccountsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:accounts' } + before_action -> { authorize_if_got_token! :read, :'read:accounts' } before_action :set_account after_action :insert_pagination_headers diff --git a/app/controllers/api/v1/accounts/following_accounts_controller.rb b/app/controllers/api/v1/accounts/following_accounts_controller.rb index 7d885a212..37d3c2d78 100644 --- a/app/controllers/api/v1/accounts/following_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/following_accounts_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::Accounts::FollowingAccountsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:accounts' } + before_action -> { authorize_if_got_token! :read, :'read:accounts' } before_action :set_account after_action :insert_pagination_headers From c57907737a35d05d4bb936acd662df6ce725456f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 03:45:19 +0200 Subject: [PATCH 119/280] Change search API to be accessible without being logged in (#18963) But with the resolve option turned off --- app/controllers/api/v2/search_controller.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index a30560133..e384ecbaf 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -5,8 +5,7 @@ class Api::V2::SearchController < Api::BaseController RESULTS_LIMIT = 20 - before_action -> { doorkeeper_authorize! :read, :'read:search' } - before_action :require_user! + before_action -> { authorize_if_got_token! :read, :'read:search' } def index @search = Search.new(search_results) @@ -24,7 +23,7 @@ class Api::V2::SearchController < Api::BaseController params[:q], current_account, limit_param(RESULTS_LIMIT), - search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed)) + search_params.merge(resolve: user_signed_in? ? truthy_param?(:resolve) : false, exclude_unreviewed: truthy_param?(:exclude_unreviewed)) ) end From 546672e292dc3218e996048464c4c52e5d00f766 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 04:00:39 +0200 Subject: [PATCH 120/280] Change "Allow trends without prior review" setting to include statuses (#17977) * Change "Allow trends without prior review" setting to include posts * Fix i18n-tasks --- app/javascript/styles/mastodon/accounts.scss | 9 ++++++++- app/javascript/styles/mastodon/forms.scss | 3 ++- app/models/account.rb | 4 ++++ app/views/admin/settings/edit.html.haml | 2 +- config/i18n-tasks.yml | 2 +- config/initializers/simple_form.rb | 5 ++++- config/locales/en.yml | 4 ++-- config/locales/simple_form.en.yml | 1 + 8 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 54b65bfc8..c007eb4b5 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -202,7 +202,8 @@ } .account-role, -.simple_form .recommended { +.simple_form .recommended, +.simple_form .not_recommended { display: inline-block; padding: 4px 6px; cursor: default; @@ -227,6 +228,12 @@ } } +.simple_form .not_recommended { + color: lighten($error-red, 12%); + background-color: rgba(lighten($error-red, 12%), 0.1); + border-color: rgba(lighten($error-red, 12%), 0.5); +} + .account__header__fields { max-width: 100vw; padding: 0; diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 990903859..a6419821f 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -102,7 +102,8 @@ code { } } - .recommended { + .recommended, + .not_recommended { position: absolute; margin: 0 4px; margin-top: -2px; diff --git a/app/models/account.rb b/app/models/account.rb index d25afeb89..1be7b4d12 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -258,6 +258,10 @@ class Account < ApplicationRecord update!(memorial: true) end + def trendable + boolean_with_default('trendable', Setting.trendable_by_default) + end + def sign? true end diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index d7896bbc0..64687b7a6 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -81,7 +81,7 @@ = f.input :trends, as: :boolean, wrapper: :with_label, label: t('admin.settings.trends.title'), hint: t('admin.settings.trends.desc_html') .fields-group - = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html') + = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html'), recommended: :not_recommended .fields-group = f.input :noindex, as: :boolean, wrapper: :with_label, label: t('admin.settings.default_noindex.title'), hint: t('admin.settings.default_noindex.desc_html') diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index 42a7afb33..1bebae5e9 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -51,7 +51,7 @@ ignore_unused: - 'activerecord.errors.*' - '{devise,pagination,doorkeeper}.*' - '{date,datetime,time,number}.*' - - 'simple_form.{yes,no,recommended}' + - 'simple_form.{yes,no,recommended,not_recommended}' - 'simple_form.{placeholders,hints,labels}.*' - 'simple_form.{error_notification,required}.:' - 'errors.messages.*' diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb index 3a2097d2f..92cffc5a2 100644 --- a/config/initializers/simple_form.rb +++ b/config/initializers/simple_form.rb @@ -11,7 +11,10 @@ end module RecommendedComponent def recommended(_wrapper_options = nil) return unless options[:recommended] - options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.recommended'), class: 'recommended')]) } + + key = options[:recommended].is_a?(Symbol) ? options[:recommended] : :recommended + options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t(key, scope: 'simple_form'), class: key)]) } + nil end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 0b721c163..9f047f523 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -808,8 +808,8 @@ en: title: Allow unauthenticated access to public timeline title: Site settings trendable_by_default: - desc_html: Affects hashtags that have not been previously disallowed - title: Allow hashtags to trend without prior review + desc_html: Specific trending content can still be explicitly disallowed + title: Allow trends without prior review trends: desc_html: Publicly display previously reviewed content that is currently trending title: Trends diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 28f78d500..ddc83e896 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -253,6 +253,7 @@ en: events: Enabled events url: Endpoint URL 'no': 'No' + not_recommended: Not recommended recommended: Recommended required: mark: "*" From 6c7bb926d86f74ad2de48164434262bcab643664 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 28 Aug 2022 11:31:39 +0200 Subject: [PATCH 121/280] Revert "Remove preference to aggregate reblogs in home/list feeds (#18112)" This reverts commit af396fa35f589e1f759c7a3a0dad7932f1862309. --- app/lib/feed_manager.rb | 18 +++++++++--------- .../settings/preferences/other/show.html.haml | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index be1edb08c..c607223fc 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -60,7 +60,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_home(account, status, update: false) - return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: true) + return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) trim(:home, account.id) PushUpdateWorker.perform_async(account.id, status.id, "timeline:#{account.id}", { 'update' => update }) if push_update_required?("timeline:#{account.id}") @@ -73,7 +73,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_home(account, status, update: false) - return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: true) + return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -85,7 +85,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_list(list, status, update: false) - return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: true) + return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}", { 'update' => update }) if push_update_required?("timeline:list:#{list.id}") @@ -98,7 +98,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_list(list, status, update: false) - return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: true) + return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -133,7 +133,7 @@ class FeedManager # @return [void] def merge_into_home(from_account, into_account) timeline_key = key(:home, into_account.id) - aggregate = true + aggregate = into_account.user&.aggregates_reblogs? query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -159,7 +159,7 @@ class FeedManager # @return [void] def merge_into_list(from_account, list) timeline_key = key(:list, list.id) - aggregate = true + aggregate = list.account.user&.aggregates_reblogs? query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -188,7 +188,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:home, into_account.id, status, aggregate_reblogs: true) + remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?) end end @@ -201,7 +201,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:list, list.id, status, aggregate_reblogs: true) + remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) end end @@ -260,7 +260,7 @@ class FeedManager # @return [void] def populate_home(account) limit = FeedManager::MAX_ITEMS / 2 - aggregate = true + aggregate = account.user&.aggregates_reblogs? timeline_key = key(:home, account.id) account.statuses.limit(limit).each do |status| diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index 218598758..cf604d043 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -10,6 +10,9 @@ .fields-group = f.input :setting_noindex, as: :boolean, wrapper: :with_label + .fields-group + = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true + - unless Setting.hide_followers_count .fields-group = f.input :setting_hide_followers_count, as: :boolean, wrapper: :with_label From 54ae7a221e862990550850500d70997c70187b70 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 26 Aug 2022 03:10:01 +0900 Subject: [PATCH 122/280] [Glitch] Replace to `workbox-webpack-plugin` from `offline-plugin` Port 81e1cc5fece9a431c28ca648c2dd4b1b5f643f13 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/util/main.js | 26 ++++++++++++++------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/app/javascript/flavours/glitch/util/main.js b/app/javascript/flavours/glitch/util/main.js index 6577b70c2..9e76774b6 100644 --- a/app/javascript/flavours/glitch/util/main.js +++ b/app/javascript/flavours/glitch/util/main.js @@ -1,9 +1,9 @@ -import * as registerPushNotifications from 'flavours/glitch/actions/push_notifications'; -import { setupBrowserNotifications } from 'flavours/glitch/actions/notifications'; -import { default as Mastodon, store } from 'flavours/glitch/containers/mastodon'; import React from 'react'; import ReactDOM from 'react-dom'; -import ready from './ready'; +import * as registerPushNotifications from 'flavours/glitch/actions/push_notifications'; +import { setupBrowserNotifications } from 'flavours/glitch/actions/notifications'; +import Mastodon, { store } from 'flavours/glitch/containers/mastodon'; +import ready from 'flavours/glitch/util/ready'; const perf = require('./performance'); @@ -24,10 +24,20 @@ function main() { ReactDOM.render(, mountNode); store.dispatch(setupBrowserNotifications()); - if (process.env.NODE_ENV === 'production') { - // avoid offline in dev mode because it's harder to debug - require('offline-plugin/runtime').install(); - store.dispatch(registerPushNotifications.register()); + + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + import('workbox-window') + .then(({ Workbox }) => { + const wb = new Workbox('/sw.js'); + + return wb.register(); + }) + .then(() => { + store.dispatch(registerPushNotifications.register()); + }) + .catch(err => { + console.error(err); + }); } perf.stop('main()'); }); From 4aa3b9bd016ef5d9ce9bb63f260b7f6e35b649ff Mon Sep 17 00:00:00 2001 From: luzpaz Date: Sun, 28 Aug 2022 11:44:34 -0400 Subject: [PATCH 123/280] Fix typos (#18604) * Fix typos Found via `codespell -q 3 -S ./CHANGELOG.md,./AUTHORS.md,./config/locales,./app/javascript/mastodon/locales -L ba,keypair,medias,pixelx,ro` * Follow-up typo fix --- .github/workflows/linter.yml | 2 +- lib/mastodon/search_cli.rb | 2 +- lib/tasks/mastodon.rake | 2 +- spec/lib/request_spec.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index f77a9720e..cd8cb12c4 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -55,7 +55,7 @@ jobs: with: node-version: 16.x cache: yarn - - name: Intall dependencies + - name: Install dependencies run: yarn install --frozen-lockfile - name: Set-up RuboCop Problem Mathcher uses: r7kamura/rubocop-problem-matchers-action@v1 diff --git a/lib/mastodon/search_cli.rb b/lib/mastodon/search_cli.rb index b579ebc14..b206854ab 100644 --- a/lib/mastodon/search_cli.rb +++ b/lib/mastodon/search_cli.rb @@ -30,7 +30,7 @@ module Mastodon changed since the last run. Index upgrades erase index data. Even if creating or upgrading indices is not necessary, data from the - database will be imported into the indices, unless overriden with --no-import. + database will be imported into the indices, unless overridden with --no-import. LONG_DESC def deploy if options[:concurrency] < 1 diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index d652468b3..0ccfc9f29 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -11,7 +11,7 @@ namespace :mastodon do # When the application code gets loaded, it runs `lib/mastodon/redis_configuration.rb`. # This happens before application environment configuration and sets REDIS_URL etc. # These variables are then used even when REDIS_HOST etc. are changed, so clear them - # out so they don't interfer with our new configuration. + # out so they don't interfere with our new configuration. ENV.delete('REDIS_URL') ENV.delete('CACHE_REDIS_URL') ENV.delete('SIDEKIQ_REDIS_URL') diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb index 2d300f18d..5eccf3201 100644 --- a/spec/lib/request_spec.rb +++ b/spec/lib/request_spec.rb @@ -63,7 +63,7 @@ describe Request do expect(a_request(:get, 'http://example.com').with(headers: subject.headers)).to have_been_made end - it 'closes underlaying connection' do + it 'closes underlying connection' do expect_any_instance_of(HTTP::Client).to receive(:close) expect { |block| subject.perform &block }.to yield_control end From 7a02c1d9bab8ba004eea54a907782a949ecb3493 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 28 Aug 2022 22:21:55 +0200 Subject: [PATCH 124/280] Add regexp filter field to public timeline column settings (#1834) * Add regexp filter field to public timeline column settings This has accidentally been removed while porting an upstream change years ago. * Remove dead code * Fix regexp filter not working for local and public TLs when using non-default settings --- .../components/column_settings.js | 17 ++++++++++++++--- .../ui/containers/status_list_container.js | 18 ++++++++++++++---- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/app/javascript/flavours/glitch/features/public_timeline/components/column_settings.js b/app/javascript/flavours/glitch/features/public_timeline/components/column_settings.js index e92681065..cfe821cfc 100644 --- a/app/javascript/flavours/glitch/features/public_timeline/components/column_settings.js +++ b/app/javascript/flavours/glitch/features/public_timeline/components/column_settings.js @@ -1,8 +1,13 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { injectIntl, FormattedMessage } from 'react-intl'; -import SettingToggle from '../../notifications/components/setting_toggle'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import SettingText from 'flavours/glitch/components/setting_text'; +import SettingToggle from 'flavours/glitch/features/notifications/components/setting_toggle'; + +const messages = defineMessages({ + filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' }, +}); export default @injectIntl class ColumnSettings extends React.PureComponent { @@ -15,7 +20,7 @@ class ColumnSettings extends React.PureComponent { }; render () { - const { settings, onChange } = this.props; + const { settings, onChange, intl } = this.props; return (
@@ -24,6 +29,12 @@ class ColumnSettings extends React.PureComponent { } /> {!settings.getIn(['other', 'onlyRemote']) && } />}
+ + + +
+ +
); } diff --git a/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js b/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js index bd2d2eb4e..0828e3cb0 100644 --- a/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js +++ b/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js @@ -6,8 +6,20 @@ import { createSelector } from 'reselect'; import { debounce } from 'lodash'; import { me } from 'flavours/glitch/util/initial_state'; +const normalizeTimelineId = timelineId => { + if (timelineId.startsWith('public:')) { + return 'public'; + } + + if (timelineId.startsWith('community:')) { + return 'community'; + } + + return timelineId; +}; + const getRegex = createSelector([ - (state, { type }) => state.getIn(['settings', type, 'regex', 'body']), + (state, { type }) => state.getIn(['settings', normalizeTimelineId(type), 'regex', 'body']), ], (rawRegex) => { let regex = null; @@ -20,13 +32,11 @@ const getRegex = createSelector([ }); const makeGetStatusIds = (pending = false) => createSelector([ - (state, { type }) => state.getIn(['settings', type], ImmutableMap()), + (state, { type }) => state.getIn(['settings', normalizeTimelineId(type)], ImmutableMap()), (state, { type }) => state.getIn(['timelines', type, pending ? 'pendingItems' : 'items'], ImmutableList()), (state) => state.get('statuses'), getRegex, ], (columnSettings, statusIds, statuses, regex) => { - const rawRegex = columnSettings.getIn(['regex', 'body'], '').trim(); - return statusIds.filter(id => { if (id === null) return true; From bbb45568adb4ac3b3bc6cb4c81da70b0fe605c2e Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 29 Aug 2022 08:23:05 +0200 Subject: [PATCH 125/280] Fix WebUI error in development mode (#1835) Caused by using JSX features without importing React Signed-off-by: Claire --- app/javascript/flavours/glitch/util/icons.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/javascript/flavours/glitch/util/icons.js b/app/javascript/flavours/glitch/util/icons.js index be566032e..c3e362e39 100644 --- a/app/javascript/flavours/glitch/util/icons.js +++ b/app/javascript/flavours/glitch/util/icons.js @@ -1,3 +1,5 @@ +import React from 'react'; + // Copied from emoji-mart for consistency with emoji picker and since // they don't export the icons in the package export const loupeIcon = ( From 90917b305a0389f7c851059331852006a4233094 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 29 Aug 2022 10:02:40 +0200 Subject: [PATCH 126/280] Fix WebUI error in development mode (#19078) Caused by using JSX features without importing React --- app/javascript/mastodon/utils/icons.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/javascript/mastodon/utils/icons.js b/app/javascript/mastodon/utils/icons.js index be566032e..c3e362e39 100644 --- a/app/javascript/mastodon/utils/icons.js +++ b/app/javascript/mastodon/utils/icons.js @@ -1,3 +1,5 @@ +import React from 'react'; + // Copied from emoji-mart for consistency with emoji picker and since // they don't export the icons in the package export const loupeIcon = ( From 0495302f1ca811e5ed48ed49b2d291fc119e9dc6 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 30 Aug 2022 10:57:27 +0200 Subject: [PATCH 127/280] Fix local settings navigation (#1836) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The “filters” page was removed, but not from the navigation, which would offset everything. --- .../local_settings/navigation/index.js | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/app/javascript/flavours/glitch/features/local_settings/navigation/index.js b/app/javascript/flavours/glitch/features/local_settings/navigation/index.js index ab3a554bf..d085a606c 100644 --- a/app/javascript/flavours/glitch/features/local_settings/navigation/index.js +++ b/app/javascript/flavours/glitch/features/local_settings/navigation/index.js @@ -61,34 +61,27 @@ class LocalSettingsNavigation extends React.PureComponent { active={index === 3} index={3} onNavigate={onNavigate} - icon='filter' - title={intl.formatMessage(messages.filters)} + icon='angle-double-up' + title={intl.formatMessage(messages.collapsed)} /> - Date: Wed, 31 Aug 2022 11:55:27 +0200 Subject: [PATCH 128/280] Fix error when accessing /filters/:id/statuses on glitch-soc (#1837) I failed to account for glitch-soc's theming system when merging from upstream. --- app/controllers/filters/statuses_controller.rb | 5 +++++ app/views/filters/statuses/index.html.haml | 3 --- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/controllers/filters/statuses_controller.rb b/app/controllers/filters/statuses_controller.rb index cc493c22c..4f63de7b6 100644 --- a/app/controllers/filters/statuses_controller.rb +++ b/app/controllers/filters/statuses_controller.rb @@ -6,6 +6,7 @@ class Filters::StatusesController < ApplicationController before_action :authenticate_user! before_action :set_filter before_action :set_status_filters + before_action :set_pack before_action :set_body_classes PER_PAGE = 20 @@ -25,6 +26,10 @@ class Filters::StatusesController < ApplicationController private + def set_pack + use_pack 'admin' + end + def set_filter @filter = current_account.custom_filters.find(params[:filter_id]) end diff --git a/app/views/filters/statuses/index.html.haml b/app/views/filters/statuses/index.html.haml index 886de58fa..eaa39e170 100644 --- a/app/views/filters/statuses/index.html.haml +++ b/app/views/filters/statuses/index.html.haml @@ -1,6 +1,3 @@ -- content_for :header_tags do - = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' - - content_for :page_title do = t('filters.statuses.index.title') \- From 156c6ea36ceb080ca4be007bcfdda52e907937aa Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 31 Aug 2022 16:23:10 +0200 Subject: [PATCH 129/280] =?UTF-8?q?Fix=20position=20of=20=E2=80=9Cexpand?= =?UTF-8?q?=E2=80=9D=20icon=20in=20media=20modal=20on=20glitch-soc=20(#183?= =?UTF-8?q?8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flavours/glitch/components/icon_button.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/components/icon_button.js b/app/javascript/flavours/glitch/components/icon_button.js index 9ff745355..c0664ec89 100644 --- a/app/javascript/flavours/glitch/components/icon_button.js +++ b/app/javascript/flavours/glitch/components/icon_button.js @@ -84,15 +84,21 @@ export default class IconButton extends React.PureComponent { } render () { + // Hack required for some icons which have an overriden size + let containerSize = '1.28571429em'; + if (this.props.style?.fontSize) { + containerSize = `${this.props.size * 1.28571429}px`; + } + let style = { fontSize: `${this.props.size}px`, - height: '1.28571429em', + height: containerSize, lineHeight: `${this.props.size}px`, ...this.props.style, ...(this.props.active ? this.props.activeStyle : {}), }; if (!this.props.label) { - style.width = '1.28571429em'; + style.width = containerSize; } else { style.textAlign = 'left'; } From 06b64f2e19fc3749fe7b1bc24632821ad6b4961c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:12:53 +0900 Subject: [PATCH 130/280] Bump workbox-webpack-plugin from 6.5.3 to 6.5.4 (#19093) Bumps [workbox-webpack-plugin](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-webpack-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 234 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 145 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index 6973afeaa..d24051c99 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "workbox-precaching": "^6.5.3", "workbox-routing": "^6.5.3", "workbox-strategies": "^6.5.3", - "workbox-webpack-plugin": "^6.5.3", + "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.3", "ws": "^8.8.1" }, diff --git a/yarn.lock b/yarn.lock index be3db7a96..90e56811d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,6 +37,11 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" + integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== + "@babel/compat-data@^7.17.10": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" @@ -107,7 +112,7 @@ "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" -"@babel/generator@^7.18.13": +"@babel/generator@^7.18.13", "@babel/generator@^7.18.6": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== @@ -149,7 +154,7 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.6", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== @@ -180,7 +185,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.2": +"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== @@ -331,7 +336,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": +"@babel/helper-skip-transparent-expression-wrappers@^7.18.6", "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== @@ -426,7 +431,7 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== -"@babel/parser@^7.18.10", "@babel/parser@^7.18.13": +"@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.6": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== @@ -607,7 +612,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.9": +"@babel/plugin-proposal-optional-chaining@^7.18.6", "@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== @@ -1044,7 +1049,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-parameters@^7.18.8": +"@babel/plugin-transform-parameters@^7.18.6", "@babel/plugin-transform-parameters@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== @@ -1865,7 +1870,7 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -2795,7 +2800,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.4, array-includes@^3.1.5: +array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== @@ -6242,6 +6247,11 @@ idb@^6.1.4: resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== +idb@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.2.tgz#7a067e20dd16539938e456814b7d714ba8db3892" + integrity sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg== + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -12265,25 +12275,25 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workbox-background-sync@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c" - integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw== +workbox-background-sync@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9" + integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g== dependencies: - idb "^6.1.4" - workbox-core "6.5.3" + idb "^7.0.1" + workbox-core "6.5.4" -workbox-broadcast-update@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc" - integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg== +workbox-broadcast-update@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66" + integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-build@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170" - integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w== +workbox-build@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389" + integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.11.1" @@ -12307,35 +12317,48 @@ workbox-build@6.5.3: strip-comments "^2.0.1" tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "6.5.3" - workbox-broadcast-update "6.5.3" - workbox-cacheable-response "6.5.3" - workbox-core "6.5.3" - workbox-expiration "6.5.3" - workbox-google-analytics "6.5.3" - workbox-navigation-preload "6.5.3" - workbox-precaching "6.5.3" - workbox-range-requests "6.5.3" - workbox-recipes "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - workbox-streams "6.5.3" - workbox-sw "6.5.3" - workbox-window "6.5.3" + workbox-background-sync "6.5.4" + workbox-broadcast-update "6.5.4" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-google-analytics "6.5.4" + workbox-navigation-preload "6.5.4" + workbox-precaching "6.5.4" + workbox-range-requests "6.5.4" + workbox-recipes "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + workbox-streams "6.5.4" + workbox-sw "6.5.4" + workbox-window "6.5.4" -workbox-cacheable-response@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47" - integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ== +workbox-cacheable-response@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137" + integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" workbox-core@6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== -workbox-expiration@6.5.3, workbox-expiration@^6.5.3: +workbox-core@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" + integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== + +workbox-expiration@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539" + integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== + dependencies: + idb "^7.0.1" + workbox-core "6.5.4" + +workbox-expiration@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== @@ -12343,24 +12366,33 @@ workbox-expiration@6.5.3, workbox-expiration@^6.5.3: idb "^6.1.4" workbox-core "6.5.3" -workbox-google-analytics@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe" - integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw== +workbox-google-analytics@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d" + integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg== dependencies: - workbox-background-sync "6.5.3" - workbox-core "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" + workbox-background-sync "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -workbox-navigation-preload@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3" - integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg== +workbox-navigation-preload@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212" + integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-precaching@6.5.3, workbox-precaching@^6.5.3: +workbox-precaching@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72" + integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== + dependencies: + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + +workbox-precaching@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== @@ -12369,24 +12401,24 @@ workbox-precaching@6.5.3, workbox-precaching@^6.5.3: workbox-routing "6.5.3" workbox-strategies "6.5.3" -workbox-range-requests@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941" - integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA== +workbox-range-requests@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399" + integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-recipes@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a" - integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig== +workbox-recipes@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb" + integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA== dependencies: - workbox-cacheable-response "6.5.3" - workbox-core "6.5.3" - workbox-expiration "6.5.3" - workbox-precaching "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-precaching "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" workbox-routing@6.5.3, workbox-routing@^6.5.3: version "6.5.3" @@ -12395,6 +12427,13 @@ workbox-routing@6.5.3, workbox-routing@^6.5.3: dependencies: workbox-core "6.5.3" +workbox-routing@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" + integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== + dependencies: + workbox-core "6.5.4" + workbox-strategies@6.5.3, workbox-strategies@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" @@ -12402,31 +12441,46 @@ workbox-strategies@6.5.3, workbox-strategies@^6.5.3: dependencies: workbox-core "6.5.3" -workbox-streams@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b" - integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w== +workbox-strategies@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" + integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== dependencies: - workbox-core "6.5.3" - workbox-routing "6.5.3" + workbox-core "6.5.4" -workbox-sw@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd" - integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A== +workbox-streams@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69" + integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg== + dependencies: + workbox-core "6.5.4" + workbox-routing "6.5.4" -workbox-webpack-plugin@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.3.tgz#c37bb323be4952311565c07db51054fe59c87d73" - integrity sha512-Es8Xr02Gi6Kc3zaUwR691ZLy61hz3vhhs5GztcklQ7kl5k2qAusPh0s6LF3wEtlpfs9ZDErnmy5SErwoll7jBA== +workbox-sw@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736" + integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA== + +workbox-webpack-plugin@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7" + integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg== dependencies: fast-json-stable-stringify "^2.1.0" pretty-bytes "^5.4.1" upath "^1.2.0" webpack-sources "^1.4.3" - workbox-build "6.5.3" + workbox-build "6.5.4" -workbox-window@6.5.3, workbox-window@^6.5.3: +workbox-window@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91" + integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.5.4" + +workbox-window@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== From 59b53c6869caeff1571f04fe277f6db73f2c73b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:14:28 +0900 Subject: [PATCH 131/280] Bump eslint-plugin-react from 7.30.1 to 7.31.1 (#19082) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.30.1 to 7.31.1. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.30.1...v7.31.1) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 18 +++++------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index d24051c99..1f28fd577 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.0", - "eslint-plugin-react": "~7.30.1", + "eslint-plugin-react": "~7.31.1", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", "postcss-scss": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index 90e56811d..0ac565e75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5049,10 +5049,10 @@ eslint-plugin-promise@~6.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== -eslint-plugin-react@~7.30.1: - version "7.30.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" - integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== +eslint-plugin-react@~7.31.1: + version "7.31.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz#d29793ed27743f3ed8a473c347b1bf5a0a8fb9af" + integrity sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" @@ -7519,15 +7519,7 @@ jsonpointer@^5.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072" integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== - dependencies: - array-includes "^3.1.3" - object.assign "^4.1.2" - -jsx-ast-utils@^3.3.2: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== From dcd81f05bcf5bc6a395a09ef79cff8380c397297 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:15:32 +0900 Subject: [PATCH 132/280] Bump sidekiq from 6.5.5 to 6.5.6 (#19081) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.5 to 6.5.6. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.5...v6.5.6) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 13357f600..e4a19ec30 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -610,10 +610,10 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) semantic_range (3.0.0) - sidekiq (6.5.5) - connection_pool (>= 2.2.2) + sidekiq (6.5.6) + connection_pool (>= 2.2.5) rack (~> 2.0) - redis (>= 4.5.0) + redis (>= 4.5.0, < 5) sidekiq-bulk (0.2.0) sidekiq sidekiq-scheduler (4.0.2) From 5073a755d7f1f9060ea6e4cf39846df89d771a65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:16:06 +0900 Subject: [PATCH 133/280] Bump rails from 6.1.6 to 6.1.6.1 (#18831) Bumps [rails](https://github.com/rails/rails) from 6.1.6 to 6.1.6.1. - [Release notes](https://github.com/rails/rails/releases) - [Commits](https://github.com/rails/rails/compare/v6.1.6...v6.1.6.1) --- updated-dependencies: - dependency-name: rails dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 110 +++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e4a19ec30..6cb9c7ba2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,40 +10,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.1.6) - actionpack (= 6.1.6) - activesupport (= 6.1.6) + actioncable (6.1.6.1) + actionpack (= 6.1.6.1) + activesupport (= 6.1.6.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.6) - actionpack (= 6.1.6) - activejob (= 6.1.6) - activerecord (= 6.1.6) - activestorage (= 6.1.6) - activesupport (= 6.1.6) + actionmailbox (6.1.6.1) + actionpack (= 6.1.6.1) + activejob (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) mail (>= 2.7.1) - actionmailer (6.1.6) - actionpack (= 6.1.6) - actionview (= 6.1.6) - activejob (= 6.1.6) - activesupport (= 6.1.6) + actionmailer (6.1.6.1) + actionpack (= 6.1.6.1) + actionview (= 6.1.6.1) + activejob (= 6.1.6.1) + activesupport (= 6.1.6.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.6) - actionview (= 6.1.6) - activesupport (= 6.1.6) + actionpack (6.1.6.1) + actionview (= 6.1.6.1) + activesupport (= 6.1.6.1) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.6) - actionpack (= 6.1.6) - activerecord (= 6.1.6) - activestorage (= 6.1.6) - activesupport (= 6.1.6) + actiontext (6.1.6.1) + actionpack (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) nokogiri (>= 1.8.5) - actionview (6.1.6) - activesupport (= 6.1.6) + actionview (6.1.6.1) + activesupport (= 6.1.6.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -54,22 +54,22 @@ GEM case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.8) - activejob (6.1.6) - activesupport (= 6.1.6) + activejob (6.1.6.1) + activesupport (= 6.1.6.1) globalid (>= 0.3.6) - activemodel (6.1.6) - activesupport (= 6.1.6) - activerecord (6.1.6) - activemodel (= 6.1.6) - activesupport (= 6.1.6) - activestorage (6.1.6) - actionpack (= 6.1.6) - activejob (= 6.1.6) - activerecord (= 6.1.6) - activesupport (= 6.1.6) + activemodel (6.1.6.1) + activesupport (= 6.1.6.1) + activerecord (6.1.6.1) + activemodel (= 6.1.6.1) + activesupport (= 6.1.6.1) + activestorage (6.1.6.1) + actionpack (= 6.1.6.1) + activejob (= 6.1.6.1) + activerecord (= 6.1.6.1) + activesupport (= 6.1.6.1) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.6) + activesupport (6.1.6.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -224,7 +224,7 @@ GEM faraday (~> 1) multi_json encryptor (3.0.0) - erubi (1.10.0) + erubi (1.11.0) et-orbi (1.2.7) tzinfo excon (0.76.0) @@ -405,7 +405,7 @@ GEM mime-types-data (3.2022.0105) mini_mime (1.1.2) mini_portile2 (2.8.0) - minitest (5.16.2) + minitest (5.16.3) msgpack (1.5.4) multi_json (1.15.0) multipart-post (2.1.1) @@ -500,20 +500,20 @@ GEM rack rack-test (2.0.2) rack (>= 1.3) - rails (6.1.6) - actioncable (= 6.1.6) - actionmailbox (= 6.1.6) - actionmailer (= 6.1.6) - actionpack (= 6.1.6) - actiontext (= 6.1.6) - actionview (= 6.1.6) - activejob (= 6.1.6) - activemodel (= 6.1.6) - activerecord (= 6.1.6) - activestorage (= 6.1.6) - activesupport (= 6.1.6) + rails (6.1.6.1) + actioncable (= 6.1.6.1) + actionmailbox (= 6.1.6.1) + actionmailer (= 6.1.6.1) + actionpack (= 6.1.6.1) + actiontext (= 6.1.6.1) + actionview (= 6.1.6.1) + activejob (= 6.1.6.1) + activemodel (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) bundler (>= 1.15.0) - railties (= 6.1.6) + railties (= 6.1.6.1) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -529,9 +529,9 @@ GEM railties (>= 6.0.0, < 7) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (6.1.6) - actionpack (= 6.1.6) - activesupport (= 6.1.6) + railties (6.1.6.1) + actionpack (= 6.1.6.1) + activesupport (= 6.1.6.1) method_source rake (>= 12.2) thor (~> 1.0) From e97cdd47bda688a00d21b241ac77909cbbfff6f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:32:17 +0900 Subject: [PATCH 134/280] Bump workbox-routing from 6.5.3 to 6.5.4 (#19092) Bumps [workbox-routing](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-routing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1f28fd577..e3d8b9f6a 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "wicg-inert": "^3.1.2", "workbox-expiration": "^6.5.3", "workbox-precaching": "^6.5.3", - "workbox-routing": "^6.5.3", + "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.3", "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.3", diff --git a/yarn.lock b/yarn.lock index 0ac565e75..95029d91e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2800,7 +2800,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.5: +array-includes@^3.1.4, array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== @@ -12412,14 +12412,14 @@ workbox-recipes@6.5.4: workbox-routing "6.5.4" workbox-strategies "6.5.4" -workbox-routing@6.5.3, workbox-routing@^6.5.3: +workbox-routing@6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== dependencies: workbox-core "6.5.3" -workbox-routing@6.5.4: +workbox-routing@6.5.4, workbox-routing@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== From bf725837d5f5e972e8490b28e5f4439a5e9b8522 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:32:58 +0900 Subject: [PATCH 135/280] Bump workbox-expiration from 6.5.3 to 6.5.4 (#19091) Bumps [workbox-expiration](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-expiration dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 +-------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index e3d8b9f6a..b4229d6d0 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", - "workbox-expiration": "^6.5.3", + "workbox-expiration": "^6.5.4", "workbox-precaching": "^6.5.3", "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.3", diff --git a/yarn.lock b/yarn.lock index 95029d91e..3d0076a81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6242,11 +6242,6 @@ idb-keyval@^3.2.0: resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-3.2.0.tgz#cbbf354deb5684b6cdc84376294fc05932845bd6" integrity sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ== -idb@^6.1.4: - version "6.1.5" - resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" - integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== - idb@^7.0.1: version "7.0.2" resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.2.tgz#7a067e20dd16539938e456814b7d714ba8db3892" @@ -12342,7 +12337,7 @@ workbox-core@6.5.4: resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== -workbox-expiration@6.5.4: +workbox-expiration@6.5.4, workbox-expiration@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539" integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== @@ -12350,14 +12345,6 @@ workbox-expiration@6.5.4: idb "^7.0.1" workbox-core "6.5.4" -workbox-expiration@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" - integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== - dependencies: - idb "^6.1.4" - workbox-core "6.5.3" - workbox-google-analytics@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d" From 77e17a22f79aaea705e5e53e3f5354c43c6361ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:33:26 +0900 Subject: [PATCH 136/280] Bump eslint-plugin-promise from 6.0.0 to 6.0.1 (#19087) Bumps [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise) from 6.0.0 to 6.0.1. - [Release notes](https://github.com/xjamundx/eslint-plugin-promise/releases) - [Changelog](https://github.com/xjamundx/eslint-plugin-promise/blob/development/CHANGELOG.md) - [Commits](https://github.com/xjamundx/eslint-plugin-promise/commits) --- updated-dependencies: - dependency-name: eslint-plugin-promise dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b4229d6d0..c0f497190 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,7 @@ "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", - "eslint-plugin-promise": "~6.0.0", + "eslint-plugin-promise": "~6.0.1", "eslint-plugin-react": "~7.31.1", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", diff --git a/yarn.lock b/yarn.lock index 3d0076a81..d404f944a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5044,10 +5044,10 @@ eslint-plugin-jsx-a11y@~6.6.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-promise@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" - integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== +eslint-plugin-promise@~6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" + integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== eslint-plugin-react@~7.31.1: version "7.31.1" From e7ed2283fa90f769c1105bd05c47423d13c0f608 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 06:28:31 +0900 Subject: [PATCH 137/280] Bump workbox-strategies from 6.5.3 to 6.5.4 (#19089) Bumps [workbox-strategies](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-strategies dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index c0f497190..8eed45898 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "workbox-expiration": "^6.5.4", "workbox-precaching": "^6.5.3", "workbox-routing": "^6.5.4", - "workbox-strategies": "^6.5.3", + "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.3", "ws": "^8.8.1" diff --git a/yarn.lock b/yarn.lock index d404f944a..fb62e42af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12413,14 +12413,14 @@ workbox-routing@6.5.4, workbox-routing@^6.5.4: dependencies: workbox-core "6.5.4" -workbox-strategies@6.5.3, workbox-strategies@^6.5.3: +workbox-strategies@6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== dependencies: workbox-core "6.5.3" -workbox-strategies@6.5.4: +workbox-strategies@6.5.4, workbox-strategies@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== From 6ad807f86001b99f305ccd1ab5115fc1e73c9555 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 06:29:39 +0900 Subject: [PATCH 138/280] Bump workbox-window from 6.5.3 to 6.5.4 (#19088) Bumps [workbox-window](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-window dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 8eed45898..6809afdbb 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", - "workbox-window": "^6.5.3", + "workbox-window": "^6.5.4", "ws": "^8.8.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index fb62e42af..5cbc157e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12451,7 +12451,7 @@ workbox-webpack-plugin@^6.5.4: webpack-sources "^1.4.3" workbox-build "6.5.4" -workbox-window@6.5.4: +workbox-window@6.5.4, workbox-window@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91" integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== @@ -12459,14 +12459,6 @@ workbox-window@6.5.4: "@types/trusted-types" "^2.0.2" workbox-core "6.5.4" -workbox-window@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" - integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== - dependencies: - "@types/trusted-types" "^2.0.2" - workbox-core "6.5.3" - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" From 95a149d7c12666d15257ac88687b3193a74179c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 11:41:31 +0900 Subject: [PATCH 139/280] Bump workbox-precaching from 6.5.3 to 6.5.4 (#19083) Bumps [workbox-precaching](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-precaching dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 30 +----------------------------- 2 files changed, 2 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 6809afdbb..6ab814029 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", "workbox-expiration": "^6.5.4", - "workbox-precaching": "^6.5.3", + "workbox-precaching": "^6.5.4", "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", diff --git a/yarn.lock b/yarn.lock index 5cbc157e0..8418aa301 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12327,11 +12327,6 @@ workbox-cacheable-response@6.5.4: dependencies: workbox-core "6.5.4" -workbox-core@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" - integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== - workbox-core@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" @@ -12362,7 +12357,7 @@ workbox-navigation-preload@6.5.4: dependencies: workbox-core "6.5.4" -workbox-precaching@6.5.4: +workbox-precaching@6.5.4, workbox-precaching@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72" integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== @@ -12371,15 +12366,6 @@ workbox-precaching@6.5.4: workbox-routing "6.5.4" workbox-strategies "6.5.4" -workbox-precaching@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" - integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== - dependencies: - workbox-core "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - workbox-range-requests@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399" @@ -12399,13 +12385,6 @@ workbox-recipes@6.5.4: workbox-routing "6.5.4" workbox-strategies "6.5.4" -workbox-routing@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" - integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== - dependencies: - workbox-core "6.5.3" - workbox-routing@6.5.4, workbox-routing@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" @@ -12413,13 +12392,6 @@ workbox-routing@6.5.4, workbox-routing@^6.5.4: dependencies: workbox-core "6.5.4" -workbox-strategies@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" - integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== - dependencies: - workbox-core "6.5.3" - workbox-strategies@6.5.4, workbox-strategies@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" From d4e63cd980a87b7bdbde57124d230e7e60ec38f1 Mon Sep 17 00:00:00 2001 From: Una Date: Fri, 2 Sep 2022 00:29:31 -0700 Subject: [PATCH 140/280] Fix audio always being re-encoded even for passthrough-eligible media (#1839) --- lib/paperclip/transcoder.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/paperclip/transcoder.rb b/lib/paperclip/transcoder.rb index afd9f58ff..b3b55f82f 100644 --- a/lib/paperclip/transcoder.rb +++ b/lib/paperclip/transcoder.rb @@ -40,8 +40,10 @@ module Paperclip @output_options['f'] = 'image2' @output_options['vframes'] = 1 when 'mp4' - @output_options['acodec'] = 'aac' - @output_options['strict'] = 'experimental' + unless eligible_to_passthrough?(metadata) + @output_options['acodec'] = 'aac' + @output_options['strict'] = 'experimental' + end if high_vfr?(metadata) && !eligible_to_passthrough?(metadata) @output_options['vsync'] = 'vfr' From 2a46fcc3ed6b9c013c549d7bcd3f1827ec8c306c Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 2 Sep 2022 11:57:06 +0200 Subject: [PATCH 141/280] Fix regexp filtering in pinned community/public TLs (#1840) --- .../flavours/glitch/components/status_list.js | 1 + .../features/community_timeline/index.js | 4 ++++ .../glitch/features/home_timeline/index.js | 3 +++ .../glitch/features/public_timeline/index.js | 4 ++++ .../ui/containers/status_list_container.js | 20 ++++--------------- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/javascript/flavours/glitch/components/status_list.js b/app/javascript/flavours/glitch/components/status_list.js index 9095e087e..ac255f4ac 100644 --- a/app/javascript/flavours/glitch/components/status_list.js +++ b/app/javascript/flavours/glitch/components/status_list.js @@ -25,6 +25,7 @@ export default class StatusList extends ImmutablePureComponent { alwaysPrepend: PropTypes.bool, emptyMessage: PropTypes.node, timelineId: PropTypes.string.isRequired, + regex: PropTypes.string, }; static defaultProps = { diff --git a/app/javascript/flavours/glitch/features/community_timeline/index.js b/app/javascript/flavours/glitch/features/community_timeline/index.js index 7341f9702..64030e195 100644 --- a/app/javascript/flavours/glitch/features/community_timeline/index.js +++ b/app/javascript/flavours/glitch/features/community_timeline/index.js @@ -19,11 +19,13 @@ const mapStateToProps = (state, { columnId }) => { const columns = state.getIn(['settings', 'columns']); const index = columns.findIndex(c => c.get('uuid') === uuid); const onlyMedia = (columnId && index >= 0) ? columns.get(index).getIn(['params', 'other', 'onlyMedia']) : state.getIn(['settings', 'community', 'other', 'onlyMedia']); + const regex = (columnId && index >= 0) ? columns.get(index).getIn(['params', 'regex', 'body']) : state.getIn(['settings', 'community', 'regex', 'body']); const timelineState = state.getIn(['timelines', `community${onlyMedia ? ':media' : ''}`]); return { hasUnread: !!timelineState && timelineState.get('unread') > 0, onlyMedia, + regex, }; }; @@ -46,6 +48,7 @@ class CommunityTimeline extends React.PureComponent { hasUnread: PropTypes.bool, multiColumn: PropTypes.bool, onlyMedia: PropTypes.bool, + regex: PropTypes.string, }; handlePin = () => { @@ -127,6 +130,7 @@ class CommunityTimeline extends React.PureComponent { onLoadMore={this.handleLoadMore} emptyMessage={} bindToDocument={!multiColumn} + regex={this.props.regex} /> ); diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.js b/app/javascript/flavours/glitch/features/home_timeline/index.js index 19551d6b8..51e932307 100644 --- a/app/javascript/flavours/glitch/features/home_timeline/index.js +++ b/app/javascript/flavours/glitch/features/home_timeline/index.js @@ -26,6 +26,7 @@ const mapStateToProps = state => ({ hasAnnouncements: !state.getIn(['announcements', 'items']).isEmpty(), unreadAnnouncements: state.getIn(['announcements', 'items']).count(item => !item.get('read')), showAnnouncements: state.getIn(['announcements', 'show']), + regex: state.getIn(['settings', 'home', 'regex', 'body']), }); export default @connect(mapStateToProps) @@ -42,6 +43,7 @@ class HomeTimeline extends React.PureComponent { hasAnnouncements: PropTypes.bool, unreadAnnouncements: PropTypes.number, showAnnouncements: PropTypes.bool, + regex: PropTypes.string, }; handlePin = () => { @@ -154,6 +156,7 @@ class HomeTimeline extends React.PureComponent { timelineId='home' emptyMessage={ }} />} bindToDocument={!multiColumn} + regex={this.props.regex} /> ); diff --git a/app/javascript/flavours/glitch/features/public_timeline/index.js b/app/javascript/flavours/glitch/features/public_timeline/index.js index 848049965..9f31cf922 100644 --- a/app/javascript/flavours/glitch/features/public_timeline/index.js +++ b/app/javascript/flavours/glitch/features/public_timeline/index.js @@ -21,6 +21,7 @@ const mapStateToProps = (state, { columnId }) => { const onlyMedia = (columnId && index >= 0) ? columns.get(index).getIn(['params', 'other', 'onlyMedia']) : state.getIn(['settings', 'public', 'other', 'onlyMedia']); const onlyRemote = (columnId && index >= 0) ? columns.get(index).getIn(['params', 'other', 'onlyRemote']) : state.getIn(['settings', 'public', 'other', 'onlyRemote']); const allowLocalOnly = (columnId && index >= 0) ? columns.get(index).getIn(['params', 'other', 'allowLocalOnly']) : state.getIn(['settings', 'public', 'other', 'allowLocalOnly']); + const regex = (columnId && index >= 0) ? columns.get(index).getIn(['params', 'regex', 'body']) : state.getIn(['settings', 'public', 'regex', 'body']); const timelineState = state.getIn(['timelines', `public${onlyMedia ? ':media' : ''}`]); return { @@ -28,6 +29,7 @@ const mapStateToProps = (state, { columnId }) => { onlyMedia, onlyRemote, allowLocalOnly, + regex, }; }; @@ -52,6 +54,7 @@ class PublicTimeline extends React.PureComponent { onlyMedia: PropTypes.bool, onlyRemote: PropTypes.bool, allowLocalOnly: PropTypes.bool, + regex: PropTypes.string, }; handlePin = () => { @@ -133,6 +136,7 @@ class PublicTimeline extends React.PureComponent { scrollKey={`public_timeline-${columnId}`} emptyMessage={} bindToDocument={!multiColumn} + regex={this.props.regex} /> ); diff --git a/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js b/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js index 0828e3cb0..53c3b8f39 100644 --- a/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js +++ b/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js @@ -6,20 +6,8 @@ import { createSelector } from 'reselect'; import { debounce } from 'lodash'; import { me } from 'flavours/glitch/util/initial_state'; -const normalizeTimelineId = timelineId => { - if (timelineId.startsWith('public:')) { - return 'public'; - } - - if (timelineId.startsWith('community:')) { - return 'community'; - } - - return timelineId; -}; - const getRegex = createSelector([ - (state, { type }) => state.getIn(['settings', normalizeTimelineId(type), 'regex', 'body']), + (state, { regex }) => regex, ], (rawRegex) => { let regex = null; @@ -32,7 +20,7 @@ const getRegex = createSelector([ }); const makeGetStatusIds = (pending = false) => createSelector([ - (state, { type }) => state.getIn(['settings', normalizeTimelineId(type)], ImmutableMap()), + (state, { type }) => state.getIn(['settings', type], ImmutableMap()), (state, { type }) => state.getIn(['timelines', type, pending ? 'pendingItems' : 'items'], ImmutableList()), (state) => state.get('statuses'), getRegex, @@ -70,8 +58,8 @@ const makeMapStateToProps = () => { const getStatusIds = makeGetStatusIds(); const getPendingStatusIds = makeGetStatusIds(true); - const mapStateToProps = (state, { timelineId }) => ({ - statusIds: getStatusIds(state, { type: timelineId }), + const mapStateToProps = (state, { timelineId, regex }) => ({ + statusIds: getStatusIds(state, { type: timelineId, regex }), isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true), isPartial: state.getIn(['timelines', timelineId, 'isPartial'], false), hasMore: state.getIn(['timelines', timelineId, 'hasMore']), From 9d7c323abdda66423751f3a25faf960674af8a49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9lanie=20Chauvel?= Date: Wed, 7 Sep 2022 19:37:46 +0200 Subject: [PATCH 142/280] Make composers button all aligned and the same size (#1843) --- app/javascript/flavours/glitch/styles/components/composer.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/components/composer.scss b/app/javascript/flavours/glitch/styles/components/composer.scss index 1468bd4f5..da086833c 100644 --- a/app/javascript/flavours/glitch/styles/components/composer.scss +++ b/app/javascript/flavours/glitch/styles/components/composer.scss @@ -528,7 +528,8 @@ display: flex; flex: 0 0 auto; - & > * { + & .icon-button, + & .text-icon-button { display: inline-block; box-sizing: content-box; padding: 0 3px; From af46584f826165687611d97c08dbecb8f1a0416b Mon Sep 17 00:00:00 2001 From: Ashish Kurmi <100655670+boahc077@users.noreply.github.com> Date: Thu, 8 Sep 2022 00:44:24 -0700 Subject: [PATCH 143/280] ci: add minimum GitHub token permissions for workflows (#19138) Signed-off-by: Ashish Kurmi Signed-off-by: Ashish Kurmi --- .github/workflows/build-image.yml | 3 +++ .github/workflows/check-i18n.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 157c2fcde..624aabbe7 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -10,6 +10,9 @@ on: paths: - .github/workflows/build-image.yml - Dockerfile +permissions: + contents: read + jobs: build-image: runs-on: ubuntu-latest diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml index 1c60515f8..a9d8ea2ea 100644 --- a/.github/workflows/check-i18n.yml +++ b/.github/workflows/check-i18n.yml @@ -9,6 +9,9 @@ on: env: RAILS_ENV: test +permissions: + contents: read + jobs: check-i18n: runs-on: ubuntu-latest From 2750a7a0e6baac8753f7fceb1c747f56718cd93f Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 8 Sep 2022 09:44:36 +0200 Subject: [PATCH 144/280] Fix REST API sometimes returning HTML on error (#19135) Fixes #19115 --- app/controllers/api/base_controller.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index 2e393fbb6..7ce6599c5 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -131,4 +131,10 @@ class Api::BaseController < ApplicationController def disallow_unauthenticated_api_access? authorized_fetch_mode? end + + private + + def respond_with_error(code) + render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code + end end From 9ff24772e27982c090018a84532aef78fbf39606 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:53:06 +0900 Subject: [PATCH 145/280] Bump dotenv from 16.0.1 to 16.0.2 (#19128) Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.0.1 to 16.0.2. - [Release notes](https://github.com/motdotla/dotenv/releases) - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v16.0.1...v16.0.2) --- updated-dependencies: - dependency-name: dotenv dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6ab814029..f435c4ff9 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "css-loader": "^5.2.7", "cssnano": "^4.1.11", "detect-passive-events": "^2.0.3", - "dotenv": "^16.0.1", + "dotenv": "^16.0.2", "emoji-mart": "npm:emoji-mart-lazyload", "es6-symbol": "^3.1.3", "escape-html": "^1.0.3", diff --git a/yarn.lock b/yarn.lock index 8418aa301..32a724256 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4700,10 +4700,10 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv@^16.0.1: - version "16.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" - integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== +dotenv@^16.0.2: + version "16.0.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.2.tgz#0b0f8652c016a3858ef795024508cddc4bffc5bf" + integrity sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA== duplexer@^0.1.2: version "0.1.2" From 103cec2302b16c9dd394004242124ef26d287e29 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:53:33 +0900 Subject: [PATCH 146/280] Bump faker from 2.22.0 to 2.23.0 (#19123) Bumps [faker](https://github.com/faker-ruby/faker) from 2.22.0 to 2.23.0. - [Release notes](https://github.com/faker-ruby/faker/releases) - [Changelog](https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md) - [Commits](https://github.com/faker-ruby/faker/compare/v2.22.0...v2.23.0) --- updated-dependencies: - dependency-name: faker dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 75525b0ac..92b69782e 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ end group :test do gem 'capybara', '~> 3.37' gem 'climate_control', '~> 0.2' - gem 'faker', '~> 2.22' + gem 'faker', '~> 2.23' gem 'microformats', '~> 4.4' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' diff --git a/Gemfile.lock b/Gemfile.lock index 6cb9c7ba2..0c6aea49b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -229,7 +229,7 @@ GEM tzinfo excon (0.76.0) fabrication (2.30.0) - faker (2.22.0) + faker (2.23.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) faraday-em_http (~> 1.0) @@ -765,7 +765,7 @@ DEPENDENCIES dotenv-rails (~> 2.8) ed25519 (~> 1.3) fabrication (~> 2.30) - faker (~> 2.22) + faker (~> 2.23) fast_blank (~> 1.0) fastimage fog-core (<= 2.1.0) From 56dd2dc6b9e81e483b2b224c2cf94223c494847b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:54:05 +0900 Subject: [PATCH 147/280] Bump @babel/runtime from 7.18.9 to 7.19.0 (#19122) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.18.9 to 7.19.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-runtime) --- updated-dependencies: - dependency-name: "@babel/runtime" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index f435c4ff9..3c474546c 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@babel/plugin-transform-runtime": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", - "@babel/runtime": "^7.18.9", + "@babel/runtime": "^7.19.0", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.6", diff --git a/yarn.lock b/yarn.lock index 32a724256..f7c4e8aad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1410,17 +1410,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" - integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" - integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== dependencies: regenerator-runtime "^0.13.4" From aa94c3355f98af79df63ca93141d0bed570f04fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:54:28 +0900 Subject: [PATCH 148/280] Bump @babel/plugin-proposal-decorators from 7.18.10 to 7.19.0 (#19121) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.18.10 to 7.19.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 59 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 3c474546c..32f82c379 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.18.13", - "@babel/plugin-proposal-decorators": "^7.18.10", + "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", "@babel/preset-env": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index f7c4e8aad..e1cff994b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -164,14 +164,14 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" - integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b" + integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" "@babel/helper-replace-supers" "^7.18.9" @@ -230,6 +230,14 @@ "@babel/template" "^7.18.6" "@babel/types" "^7.18.9" +"@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -293,10 +301,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" + integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== "@babel/helper-remap-async-to-generator@^7.18.6": version "7.18.6" @@ -498,16 +506,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz#788650d01e518a8a722eb8b3055dd9d73ecb7a35" - integrity sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw== +"@babel/plugin-proposal-decorators@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.0.tgz#5a3bc0699ee34117c73c960a5396ffce104c4eaa" + integrity sha512-Bo5nOSjiJccjv00+BrDkmfeBLBi2B0qe8ygj24KdL8VdwtZz+710NCwehF+x/Ng+0mkHx5za2eAofmvVFLF4Fg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-create-class-features-plugin" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.18.6" + "@babel/plugin-syntax-decorators" "^7.19.0" "@babel/plugin-proposal-dynamic-import@^7.16.7", "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" @@ -675,12 +683,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz#2e45af22835d0b0f8665da2bfd4463649ce5dbc1" - integrity sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ== +"@babel/plugin-syntax-decorators@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599" + integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -1484,6 +1492,15 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" +"@babel/types@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" + integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== + dependencies: + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" From 3edf32b5a590a6d2894ede78244670639b4474a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:54:50 +0900 Subject: [PATCH 149/280] Bump @babel/preset-env from 7.18.10 to 7.19.0 (#19127) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.10 to 7.19.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 532 ++++++++++++++------------------------------------- 2 files changed, 144 insertions(+), 390 deletions(-) diff --git a/package.json b/package.json index 32f82c379..47826e54c 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", - "@babel/preset-env": "^7.18.10", + "@babel/preset-env": "^7.19.0", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.0", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index e1cff994b..9cdeb288d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,20 +37,10 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" - integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== - -"@babel/compat-data@^7.17.10": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" - integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" - integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" + integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.2": version "7.17.10" @@ -121,6 +111,15 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" + integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== + dependencies: + "@babel/types" "^7.19.0" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -144,22 +143,12 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.17.10": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" - integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== +"@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz#537ec8339d53e806ed422f1e06c8f17d55b96bb0" + integrity sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.6", "@babel/helper-compilation-targets@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" - integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== - dependencies: - "@babel/compat-data" "^7.18.8" + "@babel/compat-data" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" browserslist "^4.20.2" semver "^6.3.0" @@ -185,7 +174,15 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2": +"@babel/helper-create-regexp-features-plugin@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" + integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" + +"@babel/helper-define-polyfill-provider@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== @@ -294,6 +291,20 @@ "@babel/traverse" "^7.18.9" "@babel/types" "^7.18.9" +"@babel/helper-module-transforms@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" + integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -344,7 +355,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.6", "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== @@ -373,7 +384,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== -"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": +"@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== @@ -444,22 +455,18 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": +"@babel/parser@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" + integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" - integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" @@ -469,27 +476,17 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" - integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== - dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== +"@babel/plugin-proposal-async-generator-functions@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz#cf5740194f170467df20581712400487efc79ff1" + integrity sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -497,7 +494,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.17.6", "@babel/plugin-proposal-class-static-block@^7.18.6": +"@babel/plugin-proposal-class-static-block@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== @@ -517,7 +514,7 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.19.0" -"@babel/plugin-proposal-dynamic-import@^7.16.7", "@babel/plugin-proposal-dynamic-import@^7.18.6": +"@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== @@ -525,14 +522,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" - integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" @@ -541,7 +530,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.7", "@babel/plugin-proposal-json-strings@^7.18.6": +"@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== @@ -549,14 +538,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" - integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" @@ -565,7 +546,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -573,7 +554,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.7", "@babel/plugin-proposal-numeric-separator@^7.18.6": +"@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -581,17 +562,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.17.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" - integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== - dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" @@ -603,7 +573,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.18.8" -"@babel/plugin-proposal-optional-catch-binding@^7.16.7", "@babel/plugin-proposal-optional-catch-binding@^7.18.6": +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== @@ -611,16 +581,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" - integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.6", "@babel/plugin-proposal-optional-chaining@^7.18.9": +"@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== @@ -629,7 +590,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.11", "@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== @@ -637,7 +598,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.16.7", "@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== @@ -647,7 +608,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== @@ -802,14 +763,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.16.7", "@babel/plugin-transform-arrow-functions@^7.18.6": +"@babel/plugin-transform-arrow-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.16.8", "@babel/plugin-transform-async-to-generator@^7.18.6": +"@babel/plugin-transform-async-to-generator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== @@ -818,20 +779,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-remap-async-to-generator" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.16.7", "@babel/plugin-transform-block-scoped-functions@^7.18.6": +"@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" - integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-block-scoping@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" @@ -839,41 +793,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-classes@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f" - integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== +"@babel/plugin-transform-classes@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" + integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.19.0" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" - integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-computed-properties@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" @@ -881,21 +815,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.17.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" - integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-destructuring@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" - integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== +"@babel/plugin-transform-destructuring@^7.18.13": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" + integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== @@ -903,13 +830,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" - integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" @@ -917,7 +837,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-exponentiation-operator@^7.16.7", "@babel/plugin-transform-exponentiation-operator@^7.18.6": +"@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== @@ -925,13 +845,6 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c" - integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" @@ -939,15 +852,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" - integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== - dependencies: - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" @@ -957,13 +861,6 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" - integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" @@ -971,14 +868,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-member-expression-literals@^7.16.7", "@babel/plugin-transform-member-expression-literals@^7.18.6": +"@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.16.7", "@babel/plugin-transform-modules-amd@^7.18.6": +"@babel/plugin-transform-modules-amd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== @@ -987,7 +884,7 @@ "@babel/helper-plugin-utils" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.17.9", "@babel/plugin-transform-modules-commonjs@^7.18.6": +"@babel/plugin-transform-modules-commonjs@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== @@ -997,29 +894,18 @@ "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.17.8": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" - integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== +"@babel/plugin-transform-modules-systemjs@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f" + integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-module-transforms" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.16.7", "@babel/plugin-transform-modules-umd@^7.18.6": +"@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== @@ -1027,22 +913,22 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10", "@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz#58c52422e4f91a381727faed7d513c89d7f41ada" + integrity sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-regexp-features-plugin" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-new-target@^7.16.7", "@babel/plugin-transform-new-target@^7.18.6": +"@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.16.7", "@babel/plugin-transform-object-super@^7.18.6": +"@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== @@ -1050,21 +936,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc" - integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.18.6", "@babel/plugin-transform-parameters@^7.18.8": +"@babel/plugin-transform-parameters@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-property-literals@^7.16.7", "@babel/plugin-transform-property-literals@^7.18.6": +"@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== @@ -1112,7 +991,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.17.9", "@babel/plugin-transform-regenerator@^7.18.6": +"@babel/plugin-transform-regenerator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== @@ -1120,7 +999,7 @@ "@babel/helper-plugin-utils" "^7.18.6" regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.16.7", "@babel/plugin-transform-reserved-words@^7.18.6": +"@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== @@ -1139,43 +1018,28 @@ babel-plugin-polyfill-regenerator "^0.4.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.16.7", "@babel/plugin-transform-shorthand-properties@^7.18.6": +"@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" - integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== +"@babel/plugin-transform-spread@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" + integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - -"@babel/plugin-transform-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" -"@babel/plugin-transform-sticky-regex@^7.16.7", "@babel/plugin-transform-sticky-regex@^7.18.6": +"@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" - integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" @@ -1183,13 +1047,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" - integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" @@ -1197,13 +1054,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" - integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" @@ -1211,7 +1061,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-regex@^7.16.7", "@babel/plugin-transform-unicode-regex@^7.18.6": +"@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== @@ -1219,98 +1069,18 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" - integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.0.tgz#fd18caf499a67d6411b9ded68dc70d01ed1e5da7" + integrity sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.17.6" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.17.3" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.17.7" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.17.9" - "@babel/plugin-transform-modules-systemjs" "^7.17.8" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" - "@babel/plugin-transform-new-target" "^7.16.7" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.17.9" - "@babel/plugin-transform-reserved-words" "^7.16.7" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.17.10" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - -"@babel/preset-env@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" - integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.19.0" + "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" + "@babel/plugin-proposal-async-generator-functions" "^7.19.0" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -1344,9 +1114,9 @@ "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-classes" "^7.19.0" "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.13" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" @@ -1356,9 +1126,9 @@ "@babel/plugin-transform-member-expression-literals" "^7.18.6" "@babel/plugin-transform-modules-amd" "^7.18.6" "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-systemjs" "^7.19.0" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.0" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" "@babel/plugin-transform-parameters" "^7.18.8" @@ -1366,14 +1136,14 @@ "@babel/plugin-transform-regenerator" "^7.18.6" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-spread" "^7.19.0" "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" + "@babel/types" "^7.19.0" babel-plugin-polyfill-corejs2 "^0.3.2" babel-plugin-polyfill-corejs3 "^0.5.3" babel-plugin-polyfill-regenerator "^0.4.0" @@ -1475,18 +1245,26 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.17.10", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" - integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== +"@babel/traverse@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed" + integrity sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.19.0" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.19.0" + "@babel/types" "^7.19.0" + debug "^4.1.0" + globals "^11.1.0" -"@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" - integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.17.10", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" + integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== dependencies: "@babel/helper-string-parser" "^7.18.10" "@babel/helper-validator-identifier" "^7.18.6" @@ -3053,15 +2831,6 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" - semver "^6.1.1" - babel-plugin-polyfill-corejs2@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" @@ -3071,14 +2840,6 @@ babel-plugin-polyfill-corejs2@^0.3.2: "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" - babel-plugin-polyfill-corejs3@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" @@ -3087,13 +2848,6 @@ babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - babel-plugin-polyfill-regenerator@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" From bc58833bba222810893d9b0601508a40233275c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:55:47 +0900 Subject: [PATCH 150/280] Bump eslint-plugin-react from 7.31.1 to 7.31.6 (#19125) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.31.1 to 7.31.6. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.1...v7.31.6) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 47826e54c..5a75ec638 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.1", - "eslint-plugin-react": "~7.31.1", + "eslint-plugin-react": "~7.31.6", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", "postcss-scss": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index 9cdeb288d..49aac4803 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4813,10 +4813,10 @@ eslint-plugin-promise@~6.0.1: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== -eslint-plugin-react@~7.31.1: - version "7.31.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz#d29793ed27743f3ed8a473c347b1bf5a0a8fb9af" - integrity sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg== +eslint-plugin-react@~7.31.6: + version "7.31.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.6.tgz#55ec176be94917ecde3f3ca0e1363073193e241a" + integrity sha512-CXu4eu28sb8Sd2+cyUYsJVyDvpTlaXPG+bOzzpS9IzZKtye96AYX3ZmHQ6ayn/OAIQ/ufDJP8ElPWd63Pepn9w== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" From 0b9167494b25328bff037a2f3e56c0dbddcf6ddc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:59:06 +0900 Subject: [PATCH 151/280] Bump sass from 1.54.5 to 1.54.8 (#19118) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.5 to 1.54.8. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.5...1.54.8) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5a75ec638..4cefb4d00 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.5", + "sass": "^1.54.8", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 49aac4803..75f5e86bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10096,10 +10096,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.5: - version "1.54.5" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.5.tgz#93708f5560784f6ff2eab8542ade021a4a947b3a" - integrity sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw== +sass@^1.54.8: + version "1.54.8" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.8.tgz#4adef0dd86ea2b1e4074f551eeda4fc5f812a996" + integrity sha512-ib4JhLRRgbg6QVy6bsv5uJxnJMTS2soVcCp9Y88Extyy13A8vV0G1fAwujOzmNkFQbR3LvedudAMbtuNRPbQww== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 7ceab5bc040118f7283ddfac1ce99d817429ca95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 22:00:06 +0900 Subject: [PATCH 152/280] Bump stylelint-config-standard-scss from 4.0.0 to 5.0.0 (#18829) Bumps [stylelint-config-standard-scss](https://github.com/stylelint-scss/stylelint-config-standard-scss) from 4.0.0 to 5.0.0. - [Release notes](https://github.com/stylelint-scss/stylelint-config-standard-scss/releases) - [Changelog](https://github.com/stylelint-scss/stylelint-config-standard-scss/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint-scss/stylelint-config-standard-scss/compare/v4.0.0...v5.0.0) --- updated-dependencies: - dependency-name: stylelint-config-standard-scss dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 40 ++++++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 4cefb4d00..db0c0a05d 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,7 @@ "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", "stylelint": "^14.11.0", - "stylelint-config-standard-scss": "^4.0.0", + "stylelint-config-standard-scss": "^5.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" }, diff --git a/yarn.lock b/yarn.lock index 75f5e86bc..d0e249e35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10848,34 +10848,34 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylelint-config-recommended-scss@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-6.0.0.tgz#02baeace2b7f30f80369b6ee2da77aae5a01bff6" - integrity sha512-6QOe2/OzXV2AP5FE12A7+qtKdZik7Saf42SMMl84ksVBBPpTdrV+9HaCbPYiRMiwELY9hXCVdH4wlJ+YJb5eig== +stylelint-config-recommended-scss@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-7.0.0.tgz#db16b6ae6055e72e3398916c0f13d6eb685902a2" + integrity sha512-rGz1J4rMAyJkvoJW4hZasuQBB7y9KIrShb20l9DVEKKZSEi1HAy0vuNlR8HyCKy/jveb/BdaQFcoiYnmx4HoiA== dependencies: postcss-scss "^4.0.2" - stylelint-config-recommended "^7.0.0" + stylelint-config-recommended "^8.0.0" stylelint-scss "^4.0.0" -stylelint-config-recommended@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz#7497372ae83ab7a6fffc18d7d7b424c6480ae15e" - integrity sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q== +stylelint-config-recommended@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-8.0.0.tgz#7736be9984246177f017c39ec7b1cd0f19ae9117" + integrity sha512-IK6dWvE000+xBv9jbnHOnBq01gt6HGVB2ZTsot+QsMpe82doDQ9hvplxfv4YnpEuUwVGGd9y6nbaAnhrjcxhZQ== -stylelint-config-standard-scss@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-4.0.0.tgz#9c1dc99eea73394bf22ad15648a5b1d9b74ff649" - integrity sha512-xizu8PTEyB6zYXBiVg6VtvUYn9m57x+6ZtaOdaxsfpbe5eagLPGNlbYnKfm/CfN69ArUpnwR6LjgsTHzlGbtXQ== +stylelint-config-standard-scss@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-5.0.0.tgz#afc5e43c73e7a15875b8f30f54204b01a2634743" + integrity sha512-zoXLibojHZYPFjtkc4STZtAJ2yGTq3Bb4MYO0oiyO6f/vNxDKRcSDZYoqN260Gv2eD5niQIr1/kr5SXlFj9kcQ== dependencies: - stylelint-config-recommended-scss "^6.0.0" - stylelint-config-standard "^25.0.0" + stylelint-config-recommended-scss "^7.0.0" + stylelint-config-standard "^26.0.0" -stylelint-config-standard@^25.0.0: - version "25.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz#2c916984e6655d40d6e8748b19baa8603b680bff" - integrity sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA== +stylelint-config-standard@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-26.0.0.tgz#4701b8d582d34120eec7d260ba779e4c2d953635" + integrity sha512-hUuB7LaaqM8abvkOO84wh5oYSkpXgTzHu2Zza6e7mY+aOmpNTjoFBRxSLlzY0uAOMWEFx0OMKzr+reG1BUtcqQ== dependencies: - stylelint-config-recommended "^7.0.0" + stylelint-config-recommended "^8.0.0" stylelint-scss@^4.0.0: version "4.2.0" From b312f35d245fad54bd0321eef740c6a30a5b1ce4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Sep 2022 15:19:58 +0200 Subject: [PATCH 153/280] New Crowdin updates (#19049) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Croatian) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Malay) * New translations en.yml (Corsican) * New translations en.yml (Sardinian) * New translations en.yml (Kabyle) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ukrainian) * New translations en.yml (Spanish) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Portuguese) * New translations en.yml (Spanish, Argentina) * New translations en.json (Chinese Traditional) * New translations en.yml (Danish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Chinese Simplified) * New translations en.yml (Chinese Simplified) * New translations en.yml (Latvian) * New translations en.yml (Latvian) * New translations en.yml (Hungarian) * New translations en.yml (Polish) * New translations en.yml (Turkish) * New translations en.yml (Italian) * New translations en.yml (Slovenian) * New translations en.yml (German) * New translations en.yml (Icelandic) * New translations en.json (Galician) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Thai) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Basque) * New translations en.yml (Finnish) * New translations en.yml (Japanese) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations en.yml (Slovak) * New translations en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Ukrainian) * New translations en.yml (French) * New translations en.yml (Spanish) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations en.yml (Arabic) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Persian) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Chinese Simplified) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Welsh) * New translations en.yml (Chinese Traditional) * New translations en.yml (Turkish) * New translations en.yml (Catalan) * New translations en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Greek) * New translations en.yml (Basque) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.yml (Italian) * New translations en.yml (Korean) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Slovenian) * New translations en.yml (Albanian) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Ido) * New translations en.yml (Sardinian) * New translations en.yml (Corsican) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Sinhala) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Spanish, Argentina) * New translations en.yml (Vietnamese) * New translations en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Latvian) * New translations en.yml (Latvian) * New translations en.json (Asturian) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Catalan) * New translations en.yml (Catalan) * New translations activerecord.en.yml (Russian) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Hungarian) * New translations en.yml (Spanish) * New translations en.yml (Hungarian) * New translations doorkeeper.en.yml (Russian) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Turkish) * New translations en.yml (Portuguese) * New translations en.yml (Turkish) * New translations simple_form.en.yml (Polish) * New translations en.yml (Polish) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Czech) * New translations en.json (Russian) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Ukrainian) * New translations en.yml (Danish) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Czech) * New translations en.yml (Chinese Traditional) * New translations en.yml (Czech) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (Russian) * New translations simple_form.en.yml (Italian) * New translations en.yml (Italian) * New translations simple_form.en.yml (Korean) * New translations en.yml (Korean) * New translations en.yml (Korean) * New translations en.yml (German) * New translations en.yml (Catalan) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Galician) * New translations en.yml (Galician) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Polish) * New translations en.yml (Polish) * New translations en.json (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations en.yml (Icelandic) * New translations en.yml (Czech) * New translations en.yml (German) * New translations en.json (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Chinese Simplified) * New translations en.json (Bulgarian) * New translations en.json (Bulgarian) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations en.yml (German) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations en.json (German) * New translations devise.en.yml (German) * New translations doorkeeper.en.yml (German) * New translations en.json (Tamil) * New translations en.json (Tamil) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/ast.json | 8 +- app/javascript/mastodon/locales/bg.json | 38 +-- app/javascript/mastodon/locales/ca.json | 38 +-- app/javascript/mastodon/locales/da.json | 34 +-- app/javascript/mastodon/locales/de.json | 60 ++--- app/javascript/mastodon/locales/es-AR.json | 34 +-- app/javascript/mastodon/locales/es-MX.json | 2 +- app/javascript/mastodon/locales/es.json | 34 +-- app/javascript/mastodon/locales/fi.json | 34 +-- app/javascript/mastodon/locales/gd.json | 2 +- app/javascript/mastodon/locales/gl.json | 34 +-- app/javascript/mastodon/locales/he.json | 50 ++-- app/javascript/mastodon/locales/hu.json | 34 +-- app/javascript/mastodon/locales/io.json | 34 +-- app/javascript/mastodon/locales/is.json | 36 +-- app/javascript/mastodon/locales/it.json | 34 +-- app/javascript/mastodon/locales/ko.json | 34 +-- app/javascript/mastodon/locales/ku.json | 34 +-- app/javascript/mastodon/locales/lv.json | 34 +-- app/javascript/mastodon/locales/pl.json | 34 +-- app/javascript/mastodon/locales/pt-PT.json | 34 +-- app/javascript/mastodon/locales/ru.json | 50 ++-- app/javascript/mastodon/locales/sk.json | 10 +- app/javascript/mastodon/locales/sl.json | 34 +-- app/javascript/mastodon/locales/ta.json | 48 ++-- app/javascript/mastodon/locales/th.json | 24 +- app/javascript/mastodon/locales/tr.json | 34 +-- app/javascript/mastodon/locales/uk.json | 34 +-- app/javascript/mastodon/locales/vi.json | 34 +-- app/javascript/mastodon/locales/zh-CN.json | 34 +-- app/javascript/mastodon/locales/zh-TW.json | 34 +-- config/locales/activerecord.pt-BR.yml | 10 + config/locales/activerecord.ru.yml | 4 + config/locales/ar.yml | 17 -- config/locales/ast.yml | 3 - config/locales/bg.yml | 6 - config/locales/br.yml | 1 - config/locales/ca.yml | 57 +++-- config/locales/ckb.yml | 12 - config/locales/co.yml | 13 - config/locales/cs.yml | 33 +-- config/locales/cy.yml | 16 -- config/locales/da.yml | 46 ++-- config/locales/de.yml | 281 +++++++++++---------- config/locales/devise.de.yml | 18 +- config/locales/devise.hu.yml | 2 +- config/locales/doorkeeper.de.yml | 6 +- config/locales/doorkeeper.ru.yml | 7 +- config/locales/el.yml | 15 -- config/locales/eo.yml | 13 - config/locales/es-AR.yml | 46 ++-- config/locales/es-MX.yml | 50 ++-- config/locales/es.yml | 46 ++-- config/locales/et.yml | 12 - config/locales/eu.yml | 13 - config/locales/fa.yml | 13 - config/locales/fi.yml | 99 ++++++-- config/locales/fr.yml | 16 -- config/locales/fy.yml | 2 - config/locales/gd.yml | 22 +- config/locales/gl.yml | 46 ++-- config/locales/he.yml | 38 ++- config/locales/hr.yml | 4 - config/locales/hu.yml | 65 +++-- config/locales/hy.yml | 5 - config/locales/id.yml | 14 - config/locales/io.yml | 55 +++- config/locales/is.yml | 46 ++-- config/locales/it.yml | 57 +++-- config/locales/ja.yml | 14 - config/locales/ka.yml | 9 - config/locales/kab.yml | 5 - config/locales/kk.yml | 12 - config/locales/ko.yml | 39 ++- config/locales/ku.yml | 57 +++-- config/locales/lt.yml | 6 - config/locales/lv.yml | 68 +++-- config/locales/ml.yml | 2 - config/locales/ms.yml | 5 - config/locales/nl.yml | 13 - config/locales/nn.yml | 12 - config/locales/no.yml | 12 - config/locales/oc.yml | 9 - config/locales/pl.yml | 36 ++- config/locales/pt-BR.yml | 85 +++++-- config/locales/pt-PT.yml | 57 +++-- config/locales/ru.yml | 41 ++- config/locales/sc.yml | 13 - config/locales/si.yml | 16 -- config/locales/simple_form.ca.yml | 1 + config/locales/simple_form.cs.yml | 10 + config/locales/simple_form.da.yml | 1 + config/locales/simple_form.de.yml | 29 ++- config/locales/simple_form.es-AR.yml | 1 + config/locales/simple_form.es-MX.yml | 2 + config/locales/simple_form.es.yml | 1 + config/locales/simple_form.fi.yml | 2 + config/locales/simple_form.gl.yml | 1 + config/locales/simple_form.he.yml | 3 + config/locales/simple_form.hu.yml | 3 +- config/locales/simple_form.io.yml | 3 + config/locales/simple_form.is.yml | 5 +- config/locales/simple_form.it.yml | 1 + config/locales/simple_form.ko.yml | 1 + config/locales/simple_form.ku.yml | 3 +- config/locales/simple_form.lv.yml | 1 + config/locales/simple_form.pl.yml | 2 + config/locales/simple_form.pt-PT.yml | 1 + config/locales/simple_form.ru.yml | 1 + config/locales/simple_form.sl.yml | 1 + config/locales/simple_form.th.yml | 1 + config/locales/simple_form.tr.yml | 1 + config/locales/simple_form.uk.yml | 1 + config/locales/simple_form.vi.yml | 1 + config/locales/simple_form.zh-CN.yml | 4 +- config/locales/simple_form.zh-TW.yml | 1 + config/locales/sk.yml | 14 - config/locales/sl.yml | 54 ++-- config/locales/sq.yml | 16 -- config/locales/sr-Latn.yml | 7 - config/locales/sr.yml | 10 - config/locales/sv.yml | 10 - config/locales/th.yml | 35 ++- config/locales/tr.yml | 44 ++-- config/locales/uk.yml | 72 ++++-- config/locales/vi.yml | 39 ++- config/locales/zh-CN.yml | 42 +-- config/locales/zh-HK.yml | 12 - config/locales/zh-TW.yml | 39 ++- 129 files changed, 1692 insertions(+), 1516 deletions(-) diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index dba626299..50fc3f25c 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -93,8 +93,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Namái multimedia", "community.column_settings.remote_only": "Remote only", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Camudar la llingua", + "compose.language.search": "Buscar llingües…", "compose_form.direct_message_warning_learn_more": "Saber más", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", @@ -149,7 +149,7 @@ "directory.recently_active": "Actividá recién", "embed.instructions": "Empotra esti estáu nun sitiu web copiando'l códigu d'embaxo.", "embed.preview": "Asina ye cómo va vese:", - "emoji_button.activity": "Actividaes", + "emoji_button.activity": "Actividá", "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Banderes", @@ -170,7 +170,7 @@ "empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaez equí.", + "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaecen equí.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 4ded919e0..ebe795039 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -18,12 +18,12 @@ "account.followers": "Последователи", "account.followers.empty": "Все още никой не следва този потребител.", "account.followers_counter": "{count, plural, one {{counter} Последовател} other {{counter} Последователи}}", - "account.following": "Following", + "account.following": "Последвани", "account.following_counter": "{count, plural, one {{counter} Последван} other {{counter} Последвани}}", "account.follows.empty": "Този потребител все още не следва никого.", "account.follows_you": "Твой последовател", "account.hide_reblogs": "Скриване на споделяния от @{name}", - "account.joined": "Joined {date}", + "account.joined": "Присъединил се на {date}", "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}", "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", "account.media": "Мултимедия", @@ -50,9 +50,9 @@ "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Средно", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Нови потребители", "alert.rate_limited.message": "Моля, опитайте отново след {retry_time, time, medium}.", "alert.rate_limited.title": "Скоростта е ограничена", "alert.unexpected.message": "Възникна неочаквана грешка.", @@ -71,7 +71,7 @@ "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локална емисия", - "column.direct": "Direct messages", + "column.direct": "Лични съобщения", "column.directory": "Преглед на профили", "column.domain_blocks": "Hidden domains", "column.favourites": "Любими", @@ -124,8 +124,8 @@ "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Изтриване", "confirmations.delete_list.message": "Сигурни ли сте, че искате да изтриете окончателно този списък?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Отмени", + "confirmations.discard_edit_media.message": "Имате незапазени промени на описанието или прегледа на медията, отмяна въпреки това?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.", "confirmations.logout.confirm": "Излизане", @@ -143,14 +143,14 @@ "conversation.mark_as_read": "Маркиране като прочетено", "conversation.open": "Преглед на разговор", "conversation.with": "С {names}", - "directory.federated": "From known fediverse", + "directory.federated": "От познат федивърс", "directory.local": "Само от {domain}", "directory.new_arrivals": "Новодошли", "directory.recently_active": "Наскоро активни", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Ето как ще изглежда:", "emoji_button.activity": "Дейност", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Изчисти", "emoji_button.custom": "Персонализирано", "emoji_button.flags": "Знамена", "emoji_button.food": "Храна и напитки", @@ -170,12 +170,12 @@ "empty_column.blocks": "Не сте блокирали потребители все още.", "empty_column.bookmarked_statuses": "Все още нямате отметнати публикации. Когато отметнете някоя, тя ще се покаже тук.", "empty_column.community": "Локалната емисия е празна. Напишете нещо публично, за да започнете!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Все още нямате лични съобщения. Когато изпратите или получите ще се покаже тук.", "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Няма нищо популярно в момента. Проверете пак по-късно!", "empty_column.favourited_statuses": "Все още нямате любими публикации. Когато поставите някоя в любими, тя ще се покаже тук.", "empty_column.favourites": "Все още никой не е поставил тази публикация в любими. Когато някой го направи, ще се покаже тук.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "Изглежда, че няма генерирани предложения за вас. Можете да опитате да търсите за хора, които знаете или да разгледате популярните тагове.", "empty_column.follow_requests": "Все още нямате заявки за последване. Когато получите такава, тя ще се покаже тук.", "empty_column.hashtag": "В този хаштаг няма нищо все още.", "empty_column.home": "Вашата начална емисия е празна! Посетете {public} или използвайте търсене, за да започнете и да се запознаете с други потребители.", @@ -191,12 +191,12 @@ "error.unexpected_crash.next_steps_addons": "Опитайте да ги деактивирате и да опресните страницата. Ако това не помогне, може все още да използвате Mastodon чрез различен браузър или приложение.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Сигнал за проблем", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Резултати от търсенето", + "explore.suggested_follows": "За вас", + "explore.title": "Разглеждане", + "explore.trending_links": "Новини", + "explore.trending_statuses": "Публикации", + "explore.trending_tags": "Тагове", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", @@ -213,7 +213,7 @@ "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", - "follow_recommendations.done": "Done", + "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.", "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!", "follow_request.authorize": "Упълномощаване", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f67a0f3fc..c3fe88121 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -197,22 +197,22 @@ "explore.trending_links": "Notícies", "explore.trending_statuses": "Publicacions", "explore.trending_tags": "Etiquetes", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Aquesta categoria del filtr no aplica al context en el que has accedit a aquest apunt. Si vols que l'apunt sigui filtrat també en aquest context, hauràs d'editar el filtre.", + "filter_modal.added.context_mismatch_title": "El context no coincideix!", + "filter_modal.added.expired_explanation": "La categoria d'aquest filtre ha caducat, necesitaràs canviar la seva data de caducitat per a aplicar-la.", + "filter_modal.added.expired_title": "Filtre caducat!", + "filter_modal.added.review_and_configure": "Per a revisar i configurar aquesta categoria de filtre, ves a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Configuració del filtre", + "filter_modal.added.settings_link": "pàgina de configuració", + "filter_modal.added.short_explanation": "Aquest apunt s'ha afegit a la següent categoria de filtre: {title}.", + "filter_modal.added.title": "Filtre afegit!", + "filter_modal.select_filter.context_mismatch": "no aplica en aquest context", + "filter_modal.select_filter.expired": "caducat", + "filter_modal.select_filter.prompt_new": "Nova categoria: {name}", + "filter_modal.select_filter.search": "Cerca o crea", + "filter_modal.select_filter.subtitle": "Usa una categoria existent o crea una nova", + "filter_modal.select_filter.title": "Filtra aquest apunt", + "filter_modal.title.status": "Filtre un apunt", "follow_recommendations.done": "Fet", "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.", "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", @@ -238,7 +238,7 @@ "hashtag.column_settings.tag_mode.none": "Cap d’aquests", "hashtag.column_settings.tag_toggle": "Inclou etiquetes addicionals per a aquesta columna", "hashtag.follow": "Segueix etiqueta", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.total_volume": "Volumen total en els darrers {days, plural, one {day} other {{days} dies}}", "hashtag.unfollow": "Deixa de seguir etiqueta", "home.column_settings.basic": "Bàsic", "home.column_settings.show_reblogs": "Mostra els impulsos", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", "status.embed": "Incrusta", "status.favourite": "Favorit", - "status.filter": "Filter this post", + "status.filter": "Filtre aquest apunt", "status.filtered": "Filtrat", "status.hide": "Amaga publicació", "status.history.created": "{name} ha creat {date}", @@ -538,7 +538,7 @@ "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Seguiments", "timeline_hint.resources.statuses": "Publicacions més antigues", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} persones}} en els passats {days, plural, one {day} other {{days} dies}}", "trends.trending_now": "En tendència", "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 8f015b50d..80cb8e6c6 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -197,22 +197,22 @@ "explore.trending_links": "Nyheder", "explore.trending_statuses": "Indlæg", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Denne filterkategori omfatter ikke konteksten, hvorunder dette indlæg er tilgået. Redigér filteret, hvis indlægget også ønskes filtreret i denne kontekst.", + "filter_modal.added.context_mismatch_title": "Kontekstmisforhold!", + "filter_modal.added.expired_explanation": "Denne filterkategori er udløbet. Ændr dens udløbsdato, for at anvende den.", + "filter_modal.added.expired_title": "Udløbet filter!", + "filter_modal.added.review_and_configure": "Gå til {settings_link} for at gennemse og yderligere opsætte denne filterkategori.", + "filter_modal.added.review_and_configure_title": "Filterindstillinger", + "filter_modal.added.settings_link": "indstillingsside", + "filter_modal.added.short_explanation": "Dette indlæg er nu føjet til flg. filterkategori: {title}.", + "filter_modal.added.title": "Filter tilføjet!", + "filter_modal.select_filter.context_mismatch": "gælder ikke for denne kontekst", + "filter_modal.select_filter.expired": "udløbet", + "filter_modal.select_filter.prompt_new": "Ny kategori: {name}", + "filter_modal.select_filter.search": "Søg eller opret", + "filter_modal.select_filter.subtitle": "Vælg en eksisterende kategori eller opret en ny", + "filter_modal.select_filter.title": "Filtrér dette indlæg", + "filter_modal.title.status": "Filtrér et indlæg", "follow_recommendations.done": "Udført", "follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.", "follow_recommendations.lead": "Indlæg, fra personer du følger, vil fremgå kronologisk ordnet i dit hjemmefeed. Vær ikke bange for at begå fejl, da du altid og meget nemt kan ændre dit valg!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Redigeret {count, plural, one {{count} gang} other {{count} gange}}", "status.embed": "Indlejr", "status.favourite": "Favorit", - "status.filter": "Filter this post", + "status.filter": "Filtrér dette indlæg", "status.filtered": "Filtreret", "status.hide": "Skjul indlæg", "status.history.created": "{name} oprettet {date}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 2df1dc0ea..9bed25526 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -106,7 +106,7 @@ "compose_form.poll.option_placeholder": "Wahl {number}", "compose_form.poll.remove_option": "Wahl entfernen", "compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben", - "compose_form.poll.switch_to_single": "Umfrage ändern, um eine einzige Wahl zu erlauben", + "compose_form.poll.switch_to_single": "Umfrage ändern, sodass nur eine einzige Auswahl erlaubt ist", "compose_form.publish": "Veröffentlichen", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Änderungen speichern", @@ -175,20 +175,20 @@ "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!", "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", "empty_column.favourites": "Noch niemand hat diesen Beitrag favorisiert. Sobald es jemand tut, wird das hier angezeigt.", - "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen nach Leuten zu suchen, die du vielleicht kennst oder du kannst angesagte Hashtags erkunden.", + "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen, nach Leuten zu suchen, die du vielleicht kennst, oder du kannst angesagte Hashtags erkunden.", "empty_column.follow_requests": "Du hast noch keine Folge-Anfragen. Sobald du eine erhältst, wird sie hier angezeigt.", "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", "empty_column.home": "Deine Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}", "empty_column.home.suggestions": "Ein paar Vorschläge ansehen", "empty_column.list": "Diese Liste ist derzeit leer. Wenn Konten auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", - "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt.", + "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt werden.", "empty_column.mutes": "Du hast keine Profile stummgeschaltet.", "empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.", "empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Zeitleiste aufzufüllen", - "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browsereinkompatibilität konnte diese Seite nicht korrekt angezeigt werden.", + "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browser-Inkompatibilität konnte diese Seite nicht korrekt angezeigt werden.", "error.unexpected_crash.explanation_addons": "Diese Seite konnte nicht korrekt angezeigt werden. Dieser Fehler wird wahrscheinlich durch ein Browser-Add-on oder automatische Übersetzungswerkzeuge verursacht.", - "error.unexpected_crash.next_steps": "Versuche die Seite zu aktualisieren. Wenn das nicht hilft, kannst du Mastodon über einen anderen Browser oder eine native App verwenden.", - "error.unexpected_crash.next_steps_addons": "Versuche sie zu deaktivieren und lade dann die Seite neu. Wenn das Problem weiterhin besteht, solltest du Mastodon über einen anderen Browser oder eine native App nutzen.", + "error.unexpected_crash.next_steps": "Versuche, die Seite zu aktualisieren. Wenn das nicht hilft, kannst du Mastodon über einen anderen Browser oder eine native App verwenden.", + "error.unexpected_crash.next_steps_addons": "Versuche, sie zu deaktivieren, und lade dann die Seite neu. Wenn das Problem weiterhin besteht, solltest du Mastodon über einen anderen Browser oder eine native App nutzen.", "errors.unexpected_crash.copy_stacktrace": "Fehlerlog in die Zwischenablage kopieren", "errors.unexpected_crash.report_issue": "Problem melden", "explore.search_results": "Suchergebnisse", @@ -197,22 +197,22 @@ "explore.trending_links": "Nachrichten", "explore.trending_statuses": "Beiträge", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Diese Filterkategorie gilt nicht für den Kontext, in welchem du auf diesen Beitrag zugegriffen hast. Wenn der Beitrag auch in diesem Kontext gefiltert werden soll, musst du den Filter bearbeiten.", + "filter_modal.added.context_mismatch_title": "Kontext stimmt nicht überein!", + "filter_modal.added.expired_explanation": "Diese Filterkategrie ist abgelaufen, du musst das Ablaufdatum für diese Kategorie ändern.", + "filter_modal.added.expired_title": "Abgelaufener Filter!", + "filter_modal.added.review_and_configure": "Um diese Filterkategorie zu überprüfen und weiter zu konfigurieren, gehe zu {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filtereinstellungen", + "filter_modal.added.settings_link": "Einstellungsseite", + "filter_modal.added.short_explanation": "Dieser Post wurde zu folgender Filterkategorie hinzugefügt: {title}.", + "filter_modal.added.title": "Filter hinzugefügt!", + "filter_modal.select_filter.context_mismatch": "gilt nicht für diesen Kontext", + "filter_modal.select_filter.expired": "abgelaufen", + "filter_modal.select_filter.prompt_new": "Neue Kategorie: {name}", + "filter_modal.select_filter.search": "Suchen oder Erstellen", + "filter_modal.select_filter.subtitle": "Eine existierende Kategorie benutzen oder eine erstellen", + "filter_modal.select_filter.title": "Diesen Beitrag filtern", + "filter_modal.title.status": "Einen Beitrag filtern", "follow_recommendations.done": "Fertig", "follow_recommendations.heading": "Folge Leuten, von denen du Beiträge sehen möchtest! Hier sind einige Vorschläge.", "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", @@ -234,8 +234,8 @@ "hashtag.column_settings.select.no_options_message": "Keine Vorschläge gefunden", "hashtag.column_settings.select.placeholder": "Hashtags eintragen…", "hashtag.column_settings.tag_mode.all": "All diese", - "hashtag.column_settings.tag_mode.any": "Eins von diesen", - "hashtag.column_settings.tag_mode.none": "Keins von diesen", + "hashtag.column_settings.tag_mode.any": "Eines von diesen", + "hashtag.column_settings.tag_mode.none": "Keines von diesen", "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen", "hashtag.follow": "Hashtag folgen", "hashtag.total_volume": "Gesamtes Aufkommen {days, plural, one {am letzten Tag} other {in den letzten {days} Tagen}}", @@ -300,7 +300,7 @@ "lists.replies_policy.list": "Mitglieder der Liste", "lists.replies_policy.none": "Niemand", "lists.replies_policy.title": "Antworten anzeigen für:", - "lists.search": "Suche nach Leuten denen du folgst", + "lists.search": "Suche nach Leuten, denen du folgst", "lists.subheading": "Deine Listen", "load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}", "loading_indicator.label": "Wird geladen …", @@ -341,7 +341,7 @@ "notification.follow_request": "{name} möchte dir folgen", "notification.mention": "{name} hat dich erwähnt", "notification.own_poll": "Deine Umfrage ist beendet", - "notification.poll": "Eine Umfrage in der du abgestimmt hast ist vorbei", + "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist vorbei", "notification.reblog": "{name} hat deinen Beitrag geteilt", "notification.status": "{name} hat gerade etwas gepostet", "notification.update": "{name} bearbeitete einen Beitrag", @@ -430,7 +430,7 @@ "report.forward": "An {target} weiterleiten", "report.forward_hint": "Dieses Konto gehört zu einem anderen Server. Soll eine anonymisierte Kopie der Meldung auch dorthin geschickt werden?", "report.mute": "Stummschalten", - "report.mute_explanation": "Du wirst die Beiträge vom Konto nicht mehr sehen. Das Konto kann dir immernoch folgen und die Person hinter dem Konto wird deine Beiträge sehen können und nicht wissen, dass du sie stumm geschaltet hast.", + "report.mute_explanation": "Du wirst die Beiträge vom Konto nicht mehr sehen. Das Konto kann dir immer noch folgen, und die Person hinter dem Konto wird deine Beiträge sehen können und nicht wissen, dass du sie stummgeschaltet hast.", "report.next": "Weiter", "report.placeholder": "Zusätzliche Kommentare", "report.reasons.dislike": "Das gefällt mir nicht", @@ -447,7 +447,7 @@ "report.statuses.title": "Gibt es Beiträge, die diesen Bericht unterstützen?", "report.submit": "Absenden", "report.target": "{target} melden", - "report.thanks.take_action": "Das sind deine Möglichkeiten, zu bestimmen, was du auf Mastodon sehen möchtest:", + "report.thanks.take_action": "Das sind deine Möglichkeiten zu bestimmen, was du auf Mastodon sehen möchtest:", "report.thanks.take_action_actionable": "Während wir dies überprüfen, kannst du gegen @{name} vorgehen:", "report.thanks.title": "Möchtest du das nicht sehen?", "report.thanks.title_actionable": "Vielen Dank für die Meldung, wir werden uns das ansehen.", @@ -460,7 +460,7 @@ "report_notification.open": "Meldung öffnen", "search.placeholder": "Suche", "search_popout.search_format": "Fortgeschrittenes Suchformat", - "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", + "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast, zurück; außerdem auch Beiträge, in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", "search_popout.tips.hashtag": "Hashtag", "search_popout.tips.status": "Tröt", "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} mal} other {{count} mal}} bearbeitet", "status.embed": "Einbetten", "status.favourite": "Favorisieren", - "status.filter": "Filter this post", + "status.filter": "Diesen Beitrag filtern", "status.filtered": "Gefiltert", "status.hide": "Tröt verbergen", "status.history.created": "{name} erstellte {date}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 8e4b906a2..27ebd749d 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -197,22 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Mensajes", "explore.trending_tags": "Etiquetas", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que accediste a este mensaje. Si querés que el mensaje sea filtrado también en este contexto, vas a tener que editar el filtro.", + "filter_modal.added.context_mismatch_title": "¡El contexto no coincide!", + "filter_modal.added.expired_explanation": "Esta categoría de filtro caducó; vas a necesitar cambiar la fecha de caducidad para que se aplique.", + "filter_modal.added.expired_title": "¡Filtro caducado!", + "filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, visitá a la {settings_link}.", + "filter_modal.added.review_and_configure_title": "Configuración de filtro", + "filter_modal.added.settings_link": "página de configuración", + "filter_modal.added.short_explanation": "Este mensaje fue agregado a la siguiente categoría de filtros: {title}.", + "filter_modal.added.title": "¡Filtro agregado!", + "filter_modal.select_filter.context_mismatch": "no aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nueva categoría: {name}", + "filter_modal.select_filter.search": "Buscar o crear", + "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", + "filter_modal.select_filter.title": "Filtrar este mensaje", + "filter_modal.title.status": "Filtrar un mensaje", "follow_recommendations.done": "Listo", "follow_recommendations.heading": "¡Seguí cuentas cuyos mensajes te gustaría ver! Acá tenés algunas sugerencias.", "follow_recommendations.lead": "Los mensajes de las cuentas que seguís aparecerán en orden cronológico en la columna \"Inicio\". No tengás miedo de meter la pata, ¡podés dejar de seguir cuentas fácilmente en cualquier momento!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Insertar", "status.favourite": "Marcar como favorito", - "status.filter": "Filter this post", + "status.filter": "Filtrar este mensaje", "status.filtered": "Filtrado", "status.hide": "Ocultar mensaje", "status.history.created": "Creado por {name} el {date}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 96f0a59dc..bb03a2975 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 5de01d5fc..7c9700ecb 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -197,22 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Publicaciones", "explore.trending_tags": "Etiquetas", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que ha accedido a esta publlicación. Si quieres que la publicación sea filtrada también en este contexto, tendrás que editar el filtro.", + "filter_modal.added.context_mismatch_title": "¡El contexto no coincide!", + "filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado, necesitará cambiar la fecha de caducidad para que se aplique.", + "filter_modal.added.expired_title": "¡Filtro caducado!", + "filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Ajustes de filtro", + "filter_modal.added.settings_link": "página de ajustes", + "filter_modal.added.short_explanation": "Esta publicación ha sido añadida a la siguiente categoría de filtros: {title}.", + "filter_modal.added.title": "¡Filtro añadido!", + "filter_modal.select_filter.context_mismatch": "no se aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nueva categoría: {name}", + "filter_modal.select_filter.search": "Buscar o crear", + "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", + "filter_modal.select_filter.title": "Filtrar esta publicación", + "filter_modal.title.status": "Filtrar una publicación", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicación", "status.filtered": "Filtrado", "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 0dece0c51..52afeaa5d 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -197,22 +197,22 @@ "explore.trending_links": "Uutiset", "explore.trending_statuses": "Viestit", "explore.trending_tags": "Aihetunnisteet", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Tämä suodatinluokka ei koske asiayhteyttä, jossa olet käyttänyt tätä viestiä. Jos haluat, että viesti suodatetaan myös tässä yhteydessä, sinun on muokattava suodatinta.", + "filter_modal.added.context_mismatch_title": "Asiayhteys ei täsmää!", + "filter_modal.added.expired_explanation": "Tämä suodatinluokka on vanhentunut ja sinun on muutettava viimeistä voimassaolon päivää, jotta sitä voidaan käyttää.", + "filter_modal.added.expired_title": "Vanhentunut suodatin!", + "filter_modal.added.review_and_configure": "Voit tarkastella tätä suodatinluokkaa ja määrittää sen tarkemmin siirtymällä {settings_link}.", + "filter_modal.added.review_and_configure_title": "Suodattimen asetukset", + "filter_modal.added.settings_link": "asetukset sivu", + "filter_modal.added.short_explanation": "Tämä viesti on lisätty seuraavaan suodatinluokkaan: {title}.", + "filter_modal.added.title": "Suodatin lisätty!", + "filter_modal.select_filter.context_mismatch": "ei sovellu tähän asiayhteyteen", + "filter_modal.select_filter.expired": "vanhentunut", + "filter_modal.select_filter.prompt_new": "Uusi luokka: {name}", + "filter_modal.select_filter.search": "Etsi tai luo", + "filter_modal.select_filter.subtitle": "Käytä olemassa olevaa luokkaa tai luo uusi luokka", + "filter_modal.select_filter.title": "Suodata tämä viesti", + "filter_modal.title.status": "Suodata viesti", "follow_recommendations.done": "Valmis", "follow_recommendations.heading": "Seuraa ihmisiä, joilta haluaisit nähdä julkaisuja! Tässä on muutamia ehdotuksia.", "follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Muokattu {count, plural, one {{count} aika} other {{count} kertaa}}", "status.embed": "Upota", "status.favourite": "Tykkää", - "status.filter": "Filter this post", + "status.filter": "Suodata tämä viesti", "status.filtered": "Suodatettu", "status.hide": "Piilota toot", "status.history.created": "{name} luotu {date}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index c58729271..f874637fa 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Oich!", "announcement.announcement": "Brath-fios", "attachments_list.unprocessed": "(gun phròiseasadh)", - "audio.hide": "Hide audio", + "audio.hide": "Falaich an fhuaim", "autosuggest_hashtag.per_week": "{count} san t-seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", "bundle_column_error.body": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 0c7baa332..c584dd551 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -197,22 +197,22 @@ "explore.trending_links": "Novas", "explore.trending_statuses": "Publicacións", "explore.trending_tags": "Cancelos", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro non se aplica ao contexto no que accedeches a esta publicación. Se queres que a publicación se filtre nese contexto tamén, terás que editar o filtro.", + "filter_modal.added.context_mismatch_title": "Non concorda o contexto!", + "filter_modal.added.expired_explanation": "Esta categoría de filtro caducou, terás que cambiar a data de caducidade para que se aplique.", + "filter_modal.added.expired_title": "Filtro caducado!", + "filter_modal.added.review_and_configure": "Para revisar e despois configurar esta categoría de filtro, vaite a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Axustes do filtro", + "filter_modal.added.settings_link": "páxina de axustes", + "filter_modal.added.short_explanation": "Engadiuse esta publicación á seguinte categoría de filtro: {title}.", + "filter_modal.added.title": "Filtro engadido!", + "filter_modal.select_filter.context_mismatch": "non se aplica neste contexto", + "filter_modal.select_filter.expired": "caducado", + "filter_modal.select_filter.prompt_new": "Nova categoría: {name}", + "filter_modal.select_filter.search": "Buscar ou crear", + "filter_modal.select_filter.subtitle": "Usar unha categoría existente ou crear unha nova", + "filter_modal.select_filter.title": "Filtrar esta publicación", + "filter_modal.title.status": "Filtrar unha publicación", "follow_recommendations.done": "Feito", "follow_recommendations.heading": "Segue a persoas das que queiras ler publicacións! Aqui tes unhas suxestións.", "follow_recommendations.lead": "As publicacións das persoas que segues aparecerán na túa cronoloxía de inicio ordenadas temporalmente. Non teñas medo a equivocarte, podes deixar de seguirlas igual de fácil en calquera momento!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustar", "status.favourite": "Favorito", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicación", "status.filtered": "Filtrado", "status.hide": "Agochar publicación", "status.history.created": "{name} creouno o {date}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 281b91bc1..81253fd1f 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "אופס!", "announcement.announcement": "הכרזה", "attachments_list.unprocessed": "(לא מעובד)", - "audio.hide": "Hide audio", + "audio.hide": "השתק", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", "bundle_column_error.body": "משהו השתבש בעת טעינת הרכיב הזה.", @@ -197,22 +197,22 @@ "explore.trending_links": "חדשות", "explore.trending_statuses": "פוסטים", "explore.trending_tags": "האשטאגים", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "קטגוריית הפילטר הזאת לא חלה על ההקשר שממנו הגעת אל הפוסט הזה. אם תרצה/י שהפוסט יסונן גם בהקשר זה, תצטרך/י לערוך את הפילטר.", + "filter_modal.added.context_mismatch_title": "אין התאמה להקשר!", + "filter_modal.added.expired_explanation": "פג תוקפה של קטגוריית הסינון הזו, יש צורך לשנות את תאריך התפוגה כדי שהסינון יוחל.", + "filter_modal.added.expired_title": "פג תוקף הפילטר!", + "filter_modal.added.review_and_configure": "לסקירה והתאמה מתקדמת של קטגוריית הסינון הזו, לכו ל{settings_link}.", + "filter_modal.added.review_and_configure_title": "אפשרויות סינון", + "filter_modal.added.settings_link": "דף הגדרות", + "filter_modal.added.short_explanation": "הפוסט הזה הוסף לקטגוריית הסינון הזו: {title}.", + "filter_modal.added.title": "הפילטר הוסף!", + "filter_modal.select_filter.context_mismatch": "לא חל בהקשר זה", + "filter_modal.select_filter.expired": "פג התוקף", + "filter_modal.select_filter.prompt_new": "קטגוריה חדשה {name}", + "filter_modal.select_filter.search": "חיפוש או יצירה", + "filter_modal.select_filter.subtitle": "שימוש בקטגורייה קיימת או יצירת אחת חדשה", + "filter_modal.select_filter.title": "סינון הפוסט הזה", + "filter_modal.title.status": "סנן פוסט", "follow_recommendations.done": "בוצע", "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.", "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!", @@ -256,7 +256,7 @@ "keyboard_shortcuts.description": "תיאור", "keyboard_shortcuts.direct": "לפתיחת טור הודעות ישירות", "keyboard_shortcuts.down": "לנוע במורד הרשימה", - "keyboard_shortcuts.enter": "פתח חצרוץ", + "keyboard_shortcuts.enter": "פתח פוסט", "keyboard_shortcuts.favourite": "לחבב", "keyboard_shortcuts.favourites": "פתיחת רשימת מועדפים", "keyboard_shortcuts.federated": "פתיחת ציר זמן בין-קהילתי", @@ -270,7 +270,7 @@ "keyboard_shortcuts.my_profile": "פתיחת הפרופיל שלך", "keyboard_shortcuts.notifications": "פתיחת טור התראות", "keyboard_shortcuts.open_media": "פתיחת מדיה", - "keyboard_shortcuts.pinned": "פתיחת רשימת חצרותים מוצמדים", + "keyboard_shortcuts.pinned": "פתיחת פוסטים נעוצים", "keyboard_shortcuts.profile": "פתח את פרופיל המשתמש", "keyboard_shortcuts.reply": "תגובה לפוסט", "keyboard_shortcuts.requests": "פתיחת רשימת בקשות מעקב", @@ -362,7 +362,7 @@ "notifications.column_settings.reblog": "הדהודים:", "notifications.column_settings.show": "הצגה בטור", "notifications.column_settings.sound": "שמע מופעל", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "פוסטים חדשים:", "notifications.column_settings.unread_notifications.category": "התראות שלא נקראו", "notifications.column_settings.unread_notifications.highlight": "הבלט התראות שלא נקראו", "notifications.column_settings.update": "שינויים:", @@ -424,13 +424,13 @@ "report.category.subtitle": "בחר/י את המתאים ביותר", "report.category.title": "ספר/י לנו מה קורה עם ה-{type} הזה", "report.category.title_account": "פרופיל", - "report.category.title_status": "חצרוץ", + "report.category.title_status": "פוסט", "report.close": "בוצע", "report.comment.title": "האם יש דבר נוסף שלדעתך חשוב שנדע?", "report.forward": "קדם ל-{target}", "report.forward_hint": "חשבון זה הוא משרת אחר. האם לשלוח בנוסף עותק אנונימי לשם?", "report.mute": "להשתיק", - "report.mute_explanation": "לא ניתן יהיה לראות את חצרוציהם. הם עדיין יוכלו לעקוב אחריך ולראות את חצרוציך ולא ידעו שהם מושתקים.", + "report.mute_explanation": "לא ניתן יהיה לראות את הפוסטים. הם עדיין יוכלו לעקוב אחריך ולראות את הפוסטים שלך ולא ידעו שהם מושתקים.", "report.next": "הבא", "report.placeholder": "הערות נוספות", "report.reasons.dislike": "אני לא אוהב את זה", @@ -444,7 +444,7 @@ "report.rules.subtitle": "בחר/י את כל המתאימים", "report.rules.title": "אילו חוקים מופרים?", "report.statuses.subtitle": "בחר/י את כל המתאימים", - "report.statuses.title": "האם ישנם חצרוצים התומכים בדיווח זה?", + "report.statuses.title": "האם ישנם פוסטים התומכים בדיווח זה?", "report.submit": "שליחה", "report.target": "דיווח על {target}", "report.thanks.take_action": "הנה כמה אפשרויות לשליטה בתצוגת מסטודון:", @@ -487,7 +487,7 @@ "status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}", "status.embed": "הטמעה", "status.favourite": "חיבוב", - "status.filter": "Filter this post", + "status.filter": "סנן פוסט זה", "status.filtered": "סונן", "status.hide": "הסתר פוסט", "status.history.created": "{name} יצר/ה {date}", @@ -505,7 +505,7 @@ "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.remove_bookmark": "הסרת סימניה", "status.reply": "תגובה", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index ce25cd103..08cb01dc3 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -197,22 +197,22 @@ "explore.trending_links": "Hírek", "explore.trending_statuses": "Bejegyzések", "explore.trending_tags": "Hashtagek", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ez a szűrőkategória nem érvényes abban a környezetben, amelyből elérted ezt a bejegyzést. Ha ebben a környezetben is szűrni szeretnéd a bejegyzést, akkor szerkesztened kell a szűrőt.", + "filter_modal.added.context_mismatch_title": "Környezeti eltérés.", + "filter_modal.added.expired_explanation": "Ez a szűrőkategória elévült, a használatához módosítanod kell az elévülési dátumot.", + "filter_modal.added.expired_title": "Elévült szűrő.", + "filter_modal.added.review_and_configure": "A szűrőkategória felülvizsgálatához és további beállításához ugorjon a {settings_link} oldalra.", + "filter_modal.added.review_and_configure_title": "Szűrőbeállítások", + "filter_modal.added.settings_link": "beállítások oldal", + "filter_modal.added.short_explanation": "A következő bejegyzés hozzá lett adva a következő szűrőkategóriához: {title}.", + "filter_modal.added.title": "Szűrő hozzáadva.", + "filter_modal.select_filter.context_mismatch": "nem érvényes erre a környezetre", + "filter_modal.select_filter.expired": "elévült", + "filter_modal.select_filter.prompt_new": "Új kategória: {name}", + "filter_modal.select_filter.search": "Keresés vagy létrehozás", + "filter_modal.select_filter.subtitle": "Válassz egy meglévő kategóriát, vagy hozz létre egy újat", + "filter_modal.select_filter.title": "E bejegyzés szűrése", + "filter_modal.title.status": "Egy bejegyzés szűrése", "follow_recommendations.done": "Kész", "follow_recommendations.heading": "Kövesd azokat, akiknek a bejegyzéseit látni szeretnéd! Itt van néhány javaslat.", "follow_recommendations.lead": "Az általad követettek bejegyzései a saját idővonaladon fognak megjelenni időrendi sorrendben. Ne félj attól, hogy hibázol! A követést bármikor, ugyanilyen könnyen visszavonhatod!", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} alkalommal} other {{count} alkalommal}} szerkesztve", "status.embed": "Beágyazás", "status.favourite": "Kedvenc", - "status.filter": "Filter this post", + "status.filter": "E bejegyzés szűrése", "status.filtered": "Megszűrt", "status.hide": "Bejegyzés elrejtése", "status.history.created": "{name} létrehozta: {date}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index f3bdb040c..28edbc7a3 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -197,22 +197,22 @@ "explore.trending_links": "Niuzi", "explore.trending_statuses": "Posti", "explore.trending_tags": "Hashtagi", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ca filtrilgrupo ne relatesas kun informo de ca acesesita posto. Se vu volas posto filtresar kun ca informo anke, vu bezonas modifikar filtrilo.", + "filter_modal.added.context_mismatch_title": "Kontenajneparigeso!", + "filter_modal.added.expired_explanation": "Ca filtrilgrupo expiris, vu bezonas chanjar expirtempo por apliko.", + "filter_modal.added.expired_title": "Expirinta filtrilo!", + "filter_modal.added.review_and_configure": "Por kontrolar e plue ajustar ca filtrilgrupo, irez a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filtrilopcioni", + "filter_modal.added.settings_link": "opcionpagino", + "filter_modal.added.short_explanation": "Ca posto adjuntesas a ca filtrilgrupo: {title}.", + "filter_modal.added.title": "Filtrilo adjuntesas!", + "filter_modal.select_filter.context_mismatch": "ne relatesas kun ca informo", + "filter_modal.select_filter.expired": "expiris", + "filter_modal.select_filter.prompt_new": "Nova grupo: {name}", + "filter_modal.select_filter.search": "Trovez o kreez", + "filter_modal.select_filter.subtitle": "Usez disponebla grupo o kreez novajo", + "filter_modal.select_filter.title": "Filtragez ca posto", + "filter_modal.title.status": "Filtragez posto", "follow_recommendations.done": "Fina", "follow_recommendations.heading": "Sequez personi quo igas posti quon vu volas vidar! Hike esas ula sugestati.", "follow_recommendations.lead": "Posti de personi quon vu sequas kronologiale montresos en vua hemniuzeto. Ne timas igar erori, vu povas desequar personi tam same facila irgatempe!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}", "status.embed": "Eninsertez", "status.favourite": "Favorizar", - "status.filter": "Filter this post", + "status.filter": "Filtragez ca posto", "status.filtered": "Filtrita", "status.hide": "Celez posto", "status.history.created": "{name} kreis ye {date}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 7e3a40fa7..e15656a50 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -197,22 +197,22 @@ "explore.trending_links": "Fréttir", "explore.trending_statuses": "Færslur", "explore.trending_tags": "Myllumerki", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Þessi síuflokkur á ekki við í því samhengi sem aðgangur þinn að þessari færslu felur í sér. Ef þú vilt að færslan sé einnig síuð í þessu samhengi, þá þarftu að breyta síunni.", + "filter_modal.added.context_mismatch_title": "Misræmi í samhengi!", + "filter_modal.added.expired_explanation": "Þessi síuflokkur er útrunninn, þú þarft að breyta gidistímanum svo hann geti átt við.", + "filter_modal.added.expired_title": "Útrunnin sía!", + "filter_modal.added.review_and_configure": "Til að yfirfara og stilla frekar þennan síuflokk, ættirðu að fara í {settings_link}.", + "filter_modal.added.review_and_configure_title": "Síustillingar", + "filter_modal.added.settings_link": "stillingasíða", + "filter_modal.added.short_explanation": "Þessari færslu hefur verið bætt í eftirfarandi síuflokk: {title}.", + "filter_modal.added.title": "Síu bætt við!", + "filter_modal.select_filter.context_mismatch": "á ekki við í þessu samhengi", + "filter_modal.select_filter.expired": "útrunnið", + "filter_modal.select_filter.prompt_new": "Nýr flokkur: {name}", + "filter_modal.select_filter.search": "Leita eða búa til", + "filter_modal.select_filter.subtitle": "Notaðu fyrirliggjandi flokk eða útbúðu nýjan", + "filter_modal.select_filter.title": "Sía þessa færslu", + "filter_modal.title.status": "Sía færslu", "follow_recommendations.done": "Lokið", "follow_recommendations.heading": "Fylgstu með fólki sem þú vilt sjá færslur frá! Hér eru nokkrar tillögur.", "follow_recommendations.lead": "Færslur frá fólki sem þú fylgist með eru birtar í tímaröð á heimastreyminu þínu. Þú þarft ekki að hræðast mistök, það er jafn auðvelt að hætta að fylgjast með fólki hvenær sem er!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Breytt {count, plural, one {{count} sinni} other {{count} sinnum}}", "status.embed": "Ívefja", "status.favourite": "Eftirlæti", - "status.filter": "Filter this post", + "status.filter": "Sía þessa færslu", "status.filtered": "Síað", "status.hide": "Fela færslu", "status.history.created": "{name} útbjó {date}", @@ -539,7 +539,7 @@ "timeline_hint.resources.follows": "Fylgist með", "timeline_hint.resources.statuses": "Eldri færslur", "trends.counter_by_accounts": "{count, plural, one {{counter} aðili} other {{counter} manns}} {days, plural, one {síðasta sólarhringinn} other {síðustu {days} daga}}", - "trends.trending_now": "Í umræðunni núna", + "trends.trending_now": "Vinsælt núna", "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 9f32a0685..3e59c2782 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -197,22 +197,22 @@ "explore.trending_links": "Novità", "explore.trending_statuses": "Post", "explore.trending_tags": "Hashtag", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "La categoria di questo filtro non si applica al contesto in cui hai acceduto a questo post. Se desideri che il post sia filtrato anche in questo contesto, dovrai modificare il filtro.", + "filter_modal.added.context_mismatch_title": "Contesto non corrispondente!", + "filter_modal.added.expired_explanation": "La categoria di questo filtro è scaduta, dovrai modificarne la data di scadenza per applicarlo.", + "filter_modal.added.expired_title": "Filtro scaduto!", + "filter_modal.added.review_and_configure": "Per revisionare e configurare ulteriormente la categoria di questo filtro, vai alle {settings_link}.", + "filter_modal.added.review_and_configure_title": "Impostazioni del filtro", + "filter_modal.added.settings_link": "pagina delle impostazioni", + "filter_modal.added.short_explanation": "Questo post è stato aggiunto alla categoria del filtro seguente: {title}.", + "filter_modal.added.title": "Filtro aggiunto!", + "filter_modal.select_filter.context_mismatch": "non si applica a questo contesto", + "filter_modal.select_filter.expired": "scaduto", + "filter_modal.select_filter.prompt_new": "Nuova categoria: {name}", + "filter_modal.select_filter.search": "Cerca o crea", + "filter_modal.select_filter.subtitle": "Usa una categoria esistente o creane una nuova", + "filter_modal.select_filter.title": "Filtra questo post", + "filter_modal.title.status": "Filtra un post", "follow_recommendations.done": "Fatto", "follow_recommendations.heading": "Segui le persone da cui vuoi vedere i messaggi! Ecco alcuni suggerimenti.", "follow_recommendations.lead": "I messaggi da persone che segui verranno visualizzati in ordine cronologico nel tuo home feed. Non abbiate paura di commettere errori, potete smettere di seguire le persone altrettanto facilmente in qualsiasi momento!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Modificato {count, plural, one {{count} volta} other {{count} volte}}", "status.embed": "Incorpora", "status.favourite": "Apprezzato", - "status.filter": "Filter this post", + "status.filter": "Filtra questo post", "status.filtered": "Filtrato", "status.hide": "Nascondi toot", "status.history.created": "{name} ha creato {date}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index e5dfc7689..300b2d7c1 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -197,22 +197,22 @@ "explore.trending_links": "소식", "explore.trending_statuses": "게시물", "explore.trending_tags": "해시태그", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "이 필터 카테고리는 당신이 이 게시물에 접근한 문맥에 적용되지 않습니다. 만약 이 문맥에서도 필터되길 원한다면, 필터를 수정해야 합니다.", + "filter_modal.added.context_mismatch_title": "문맥 불일치!", + "filter_modal.added.expired_explanation": "이 필터 카테고리는 만료되었습니다, 적용하려면 만료 일자를 변경할 필요가 있습니다.", + "filter_modal.added.expired_title": "만료된 필터!", + "filter_modal.added.review_and_configure": "이 필터 카테고리를 검토하거나 나중에 더 설정하려면, {settings_link}로 가십시오.", + "filter_modal.added.review_and_configure_title": "필터 설정", + "filter_modal.added.settings_link": "설정 페이지", + "filter_modal.added.short_explanation": "이 게시물을 다음 필터 카테고리에 추가되었습니다: {title}.", + "filter_modal.added.title": "필터 추가됨!", + "filter_modal.select_filter.context_mismatch": "이 문맥에 적용되지 않습니다", + "filter_modal.select_filter.expired": "만료됨", + "filter_modal.select_filter.prompt_new": "새 카테고리: {name}", + "filter_modal.select_filter.search": "검색 또는 생성", + "filter_modal.select_filter.subtitle": "기존의 카테고리를 사용하거나 새로 하나를 만듧니다", + "filter_modal.select_filter.title": "이 게시물을 필터", + "filter_modal.title.status": "게시물 필터", "follow_recommendations.done": "완료", "follow_recommendations.heading": "게시물을 받아 볼 사람들을 팔로우 하세요! 여기 몇몇의 추천이 있습니다.", "follow_recommendations.lead": "당신이 팔로우 하는 사람들의 게시물이 시간순으로 정렬되어 당신의 홈 피드에 표시될 것입니다. 실수를 두려워 하지 마세요, 언제든지 쉽게 팔로우 취소를 할 수 있습니다!", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count}번 수정됨", "status.embed": "공유하기", "status.favourite": "좋아요", - "status.filter": "Filter this post", + "status.filter": "이 게시물을 필터", "status.filtered": "필터로 걸러짐", "status.hide": "툿 숨기기", "status.history.created": "{name} 님이 {date}에 생성함", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 27033efbf..06c0e6f7a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -197,22 +197,22 @@ "explore.trending_links": "Nûçe", "explore.trending_statuses": "Şandî", "explore.trending_tags": "Hashtag", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ev beşa parzûnê ji bo naveroka ku te tê de xwe gihandiye vê şandiyê nayê sepandin. Ku tu dixwazî şandî di vê naverokê de jî werê parzûnkirin, divê tu parzûnê biguherînî.", + "filter_modal.added.context_mismatch_title": "Naverok li hev nagire!", + "filter_modal.added.expired_explanation": "Ev beşa parzûnê qediya ye, ji bo ku tu bikaribe wê biguherîne divê tu dema qedandinê biguherînî.", + "filter_modal.added.expired_title": "Dema parzûnê qediya!", + "filter_modal.added.review_and_configure": "Ji bo nîrxandin û bêtir sazkirina vê beşa parzûnê, biçe {settings_link}.", + "filter_modal.added.review_and_configure_title": "Sazkariyên parzûnê", + "filter_modal.added.settings_link": "rûpela sazkariyan", + "filter_modal.added.short_explanation": "Ev şandî li beşa parzûna jêrîn hate tevlîkirin: {title}.", + "filter_modal.added.title": "Parzûn tevlî bû!", + "filter_modal.select_filter.context_mismatch": "di vê naverokê de nayê sepandin", + "filter_modal.select_filter.expired": "dema wê qediya", + "filter_modal.select_filter.prompt_new": "Beşa nû: {name}", + "filter_modal.select_filter.search": "Lê bigere an jî biafirîne", + "filter_modal.select_filter.subtitle": "Beşeke nû ya heyî bi kar bîne an jî yekî nû biafirîne", + "filter_modal.select_filter.title": "Vê şandiyê parzûn bike", + "filter_modal.title.status": "Şandiyekê parzûn bike", "follow_recommendations.done": "Qediya", "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.", "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin", "status.embed": "Hedimandî", "status.favourite": "Bijarte", - "status.filter": "Filter this post", + "status.filter": "Vê şandiyê parzûn bike", "status.filtered": "Parzûnkirî", "status.hide": "Şandiyê veşêre", "status.history.created": "{name} {date} afirand", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 1912dd7db..33f6832bf 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -197,22 +197,22 @@ "explore.trending_links": "Jaunumi", "explore.trending_statuses": "Ziņas", "explore.trending_tags": "Tēmturi", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Šī filtra kategorija neattiecas uz kontekstu, kurā esi piekļuvis šai ziņai. Ja vēlies, lai ziņa tiktu filtrēta arī šajā kontekstā, tev būs jārediģē filtrs.", + "filter_modal.added.context_mismatch_title": "Konteksta neatbilstība!", + "filter_modal.added.expired_explanation": "Šai filtra kategorijai ir beidzies derīguma termiņš. Lai to lietotu, tev būs jāmaina derīguma termiņš.", + "filter_modal.added.expired_title": "Filtrs beidzies!", + "filter_modal.added.review_and_configure": "Lai pārskatītu un tālāk konfigurētu šo filtru kategoriju, dodies uz {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filtra iestatījumi", + "filter_modal.added.settings_link": "iestatījumu lapa", + "filter_modal.added.short_explanation": "Šī ziņa ir pievienota šai filtra kategorijai: {title}.", + "filter_modal.added.title": "Filtrs pievienots!", + "filter_modal.select_filter.context_mismatch": "neattiecas uz šo kontekstu", + "filter_modal.select_filter.expired": "beidzies", + "filter_modal.select_filter.prompt_new": "Jauna kategorija: {name}", + "filter_modal.select_filter.search": "Meklē vai izveido", + "filter_modal.select_filter.subtitle": "Izmanto esošu kategoriju vai izveido jaunu", + "filter_modal.select_filter.title": "Filtrēt šo ziņu", + "filter_modal.title.status": "Filtrēt ziņu", "follow_recommendations.done": "Izpildīts", "follow_recommendations.heading": "Seko cilvēkiem, no kuriem vēlies redzēt ziņas! Šeit ir daži ieteikumi.", "follow_recommendations.lead": "Ziņas no cilvēkiem, kuriem seko, mājas plūsmā tiks parādītas hronoloģiskā secībā. Nebaidies kļūdīties, tu tikpat viegli vari pārtraukt sekot cilvēkiem jebkurā laikā!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Rediģēts {count, plural, one {{count} reize} other {{count} reizes}}", "status.embed": "Iestrādāt", "status.favourite": "Iecienītā", - "status.filter": "Filter this post", + "status.filter": "Filtrē šo ziņu", "status.filtered": "Filtrēts", "status.hide": "Slēpt", "status.history.created": "{name} izveidots {date}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 04b0868ee..e264f8055 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -197,22 +197,22 @@ "explore.trending_links": "Aktualności", "explore.trending_statuses": "Posty", "explore.trending_tags": "Hasztagi", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ta kategoria filtrów nie ma zastosowania do kontekstu, w którym uzyskałeś dostęp do tego wpisu. Jeśli chcesz, aby wpis został przefiltrowany również w tym kontekście, będziesz musiał edytować filtr.", + "filter_modal.added.context_mismatch_title": "Niezgodność kontekstów!", + "filter_modal.added.expired_explanation": "Ta kategoria filtra wygasła, będziesz musiał zmienić datę wygaśnięcia, aby ją zastosować.", + "filter_modal.added.expired_title": "Wygasły filtr!", + "filter_modal.added.review_and_configure": "Aby przejrzeć i skonfigurować tę kategorię filtrów, przejdź do {settings_link}.", + "filter_modal.added.review_and_configure_title": "Ustawienia filtra", + "filter_modal.added.settings_link": "strona ustawień", + "filter_modal.added.short_explanation": "Ten wpis został dodany do następującej kategorii filtrów: {title}.", + "filter_modal.added.title": "Filtr dodany!", + "filter_modal.select_filter.context_mismatch": "nie dotyczy tego kontekstu", + "filter_modal.select_filter.expired": "wygasły", + "filter_modal.select_filter.prompt_new": "Nowa kategoria: {name}", + "filter_modal.select_filter.search": "Szukaj lub utwórz", + "filter_modal.select_filter.subtitle": "Użyj istniejącej kategorii lub utwórz nową", + "filter_modal.select_filter.title": "Filtruj ten wpis", + "filter_modal.title.status": "Filtruj wpis", "follow_recommendations.done": "Gotowe", "follow_recommendations.heading": "Śledź ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", "follow_recommendations.lead": "Wpisy osób, które śledzisz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać śledzić każdego w każdej chwili!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Edytowano {count, plural, one {{count} raz} other {{count} razy}}", "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", - "status.filter": "Filter this post", + "status.filter": "Filtruj ten wpis", "status.filtered": "Filtrowany(-a)", "status.hide": "Schowaj toota", "status.history.created": "{name} utworzył(a) {date}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index ef097b380..15fb991bd 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -197,22 +197,22 @@ "explore.trending_links": "Notícias", "explore.trending_statuses": "Publicações", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto em que acedeu a esta publicação. Se pretender que esta publicação seja filtrada também neste contexto, terá que editar o filtro.", + "filter_modal.added.context_mismatch_title": "Contexto incoerente!", + "filter_modal.added.expired_explanation": "Esta categoria de filtro expirou, necessita alterar a data de validade para que ele seja aplicado.", + "filter_modal.added.expired_title": "Filtro expirado!", + "filter_modal.added.review_and_configure": "Para rever e configurar mais detalhadamente esta categoria de filtro, vá a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Definições do filtro", + "filter_modal.added.settings_link": "página de definições", + "filter_modal.added.short_explanation": "Esta publicação foi adicionada à seguinte categoria de filtro: {title}.", + "filter_modal.added.title": "Filtro adicionado!", + "filter_modal.select_filter.context_mismatch": "não se aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nova categoria: {name}", + "filter_modal.select_filter.search": "Pesquisar ou criar", + "filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova", + "filter_modal.select_filter.title": "Filtrar esta publicação", + "filter_modal.title.status": "Filtrar uma publicação", "follow_recommendations.done": "Concluído", "follow_recommendations.heading": "Siga pessoas das quais gostaria de ver publicações! Aqui estão algumas sugestões.", "follow_recommendations.lead": "As publicações das pessoas que segue serão exibidos em ordem cronológica na sua página inicial. Não tenha medo de cometer erros, você pode deixar de seguir as pessoas tão facilmente a qualquer momento!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editado {count, plural,one {{count} vez} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicação", "status.filtered": "Filtrada", "status.hide": "Esconder publicação", "status.history.created": "{name} criado em {date}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index e53088e39..4c277544b 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -7,12 +7,12 @@ "account.block_domain": "Заблокировать {domain}", "account.blocked": "Заблокирован(а)", "account.browse_more_on_origin_server": "Посмотреть в оригинальном профиле", - "account.cancel_follow_request": "Отменить запрос", + "account.cancel_follow_request": "Отменить подписку", "account.direct": "Написать @{name}", - "account.disable_notifications": "Отключить уведомления от @{name}", + "account.disable_notifications": "Не уведомлять о постах от @{name}", "account.domain_blocked": "Домен заблокирован", "account.edit_profile": "Редактировать профиль", - "account.enable_notifications": "Включить уведомления для @{name}", + "account.enable_notifications": "Уведомлять о постах от @{name}", "account.endorse": "Рекомендовать в профиле", "account.follow": "Подписаться", "account.followers": "Подписчики", @@ -30,7 +30,7 @@ "account.mention": "Упомянуть @{name}", "account.moved_to": "Ищите {name} здесь:", "account.mute": "Игнорировать @{name}", - "account.mute_notifications": "Скрыть уведомления от @{name}", + "account.mute_notifications": "Игнорировать уведомления от @{name}", "account.muted": "Игнорируется", "account.posts": "Посты", "account.posts_with_replies": "Посты и ответы", @@ -44,7 +44,7 @@ "account.unblock_short": "Разблокировать", "account.unendorse": "Не рекомендовать в профиле", "account.unfollow": "Отписаться", - "account.unmute": "Не игнорировать @{name}", + "account.unmute": "Убрать {name} из игнорируемых", "account.unmute_notifications": "Показывать уведомления от @{name}", "account.unmute_short": "Не игнорировать", "account_note.placeholder": "Текст заметки", @@ -127,7 +127,7 @@ "confirmations.discard_edit_media.confirm": "Отменить", "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?", "confirmations.domain_block.confirm": "Да, заблокировать узел", - "confirmations.domain_block.message": "Вы точно уверены, что хотите скрыть все посты с узла {domain}? В большинстве случаев пары блокировок и скрытий вполне достаточно.\n\nПри блокировке узла, вы перестанете получать уведомления оттуда, все посты будут скрыты из публичных лент, а подписчики убраны.", + "confirmations.domain_block.message": "Вы точно уверены, что хотите заблокировать {domain} полностью? В большинстве случаев нескольких блокировок и игнорирований вполне достаточно. Вы перестанете видеть публичную ленту и уведомления оттуда. Ваши подписчики из этого домена будут удалены.", "confirmations.logout.confirm": "Выйти", "confirmations.logout.message": "Вы уверены, что хотите выйти?", "confirmations.mute.confirm": "Игнорировать", @@ -197,22 +197,22 @@ "explore.trending_links": "Новости", "explore.trending_statuses": "Посты", "explore.trending_tags": "Хэштеги", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Эта категория не применяется к контексту, в котором вы получили доступ к этому посту. Если вы хотите, чтобы пост был отфильтрован в этом контексте, вам придётся отредактировать фильтр.", + "filter_modal.added.context_mismatch_title": "Несоответствие контекста!", + "filter_modal.added.expired_explanation": "Эта категория фильтра устарела, вам нужно изменить дату окончания фильтра, чтобы применить его.", + "filter_modal.added.expired_title": "Истёкший фильтр!", + "filter_modal.added.review_and_configure": "Для просмотра и настройки этой категории фильтра, перейдите в {settings_link}.", + "filter_modal.added.review_and_configure_title": "Настройки фильтра", + "filter_modal.added.settings_link": "страница настроек", + "filter_modal.added.short_explanation": "Этот пост был добавлен в следующую категорию фильтра: {title}.", + "filter_modal.added.title": "Фильтр добавлен!", + "filter_modal.select_filter.context_mismatch": "не применяется к этому контексту", + "filter_modal.select_filter.expired": "истекло", + "filter_modal.select_filter.prompt_new": "Новая категория: {name}", + "filter_modal.select_filter.search": "Поиск или создание", + "filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую", + "filter_modal.select_filter.title": "Фильтровать этот пост", + "filter_modal.title.status": "Фильтровать пост", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Подпишитесь на людей, чьи посты вы бы хотели видеть. Вот несколько предложений.", "follow_recommendations.lead": "Посты от людей, на которых вы подписаны, будут отображаться в вашей домашней ленте в хронологическом порядке. Не бойтесь ошибиться — вы так же легко сможете отписаться от них в любое время!", @@ -266,7 +266,7 @@ "keyboard_shortcuts.legend": "показать это окно", "keyboard_shortcuts.local": "перейти к локальной ленте", "keyboard_shortcuts.mention": "упомянуть автора поста", - "keyboard_shortcuts.muted": "открыть список игнорируемых", + "keyboard_shortcuts.muted": "Открыть список игнорируемых", "keyboard_shortcuts.my_profile": "перейти к своему профилю", "keyboard_shortcuts.notifications": "перейти к уведомлениям", "keyboard_shortcuts.open_media": "открыть вложение", @@ -328,7 +328,7 @@ "navigation_bar.keyboard_shortcuts": "Сочетания клавиш", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Выйти", - "navigation_bar.mutes": "Список игнорируемых пользователей", + "navigation_bar.mutes": "Игнорируемые пользователи", "navigation_bar.personal": "Личное", "navigation_bar.pins": "Закреплённые посты", "navigation_bar.preferences": "Настройки", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}", "status.embed": "Встроить на свой сайт", "status.favourite": "В избранное", - "status.filter": "Filter this post", + "status.filter": "Фильтровать этот пост", "status.filtered": "Отфильтровано", "status.hide": "Скрыть пост", "status.history.created": "{name} создал {date}", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 8aeb2aec6..128858646 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Oboznámenie", "attachments_list.unprocessed": "(nespracované)", - "audio.hide": "Hide audio", + "audio.hide": "Skry zvuk", "autosuggest_hashtag.per_week": "{count} týždenne", "boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie", "bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.", @@ -202,12 +202,12 @@ "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.review_and_configure_title": "Nastavenie triedenia", "filter_modal.added.settings_link": "settings page", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", + "filter_modal.added.title": "Triedenie pridané!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.expired": "vypršalo", "filter_modal.select_filter.prompt_new": "New category: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", @@ -403,7 +403,7 @@ "privacy.unlisted.short": "Verejne, ale nezobraziť v osi", "refresh": "Obnoviť", "regeneration_indicator.label": "Načítava sa…", - "regeneration_indicator.sublabel": "Vaša nástenka sa pripravuje!", + "regeneration_indicator.sublabel": "Tvoja domovská nástenka sa pripravuje!", "relative_time.days": "{number}dní", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index c793d9de8..89894acf8 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -197,22 +197,22 @@ "explore.trending_links": "Novice", "explore.trending_statuses": "Objave", "explore.trending_tags": "Ključniki", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ta kategorija filtra ne velja za kontekst, v katerem ste dostopali do te objave. Če želite, da je objava filtrirana tudi v tem kontekstu, morate urediti filter.", + "filter_modal.added.context_mismatch_title": "Neujamanje konteksta!", + "filter_modal.added.expired_explanation": "Ta kategorija filtra je pretekla, morali boste spremeniti datum veljavnosti, da bo veljal še naprej.", + "filter_modal.added.expired_title": "Filter je pretekel!", + "filter_modal.added.review_and_configure": "Če želite pregledati in nadalje prilagoditi kategorijo filtra, obiščite {settings_link}.", + "filter_modal.added.review_and_configure_title": "Nastavitve filtra", + "filter_modal.added.settings_link": "stran nastavitev", + "filter_modal.added.short_explanation": "Ta objava je bila dodana v naslednjo kategorijo filtra: {title}.", + "filter_modal.added.title": "Filter dodan!", + "filter_modal.select_filter.context_mismatch": "ne velja za ta kontekst", + "filter_modal.select_filter.expired": "poteklo", + "filter_modal.select_filter.prompt_new": "Nova kategorija: {name}", + "filter_modal.select_filter.search": "Išči ali ustvari", + "filter_modal.select_filter.subtitle": "Uporabite obstoječo kategorijo ali ustvarite novo", + "filter_modal.select_filter.title": "Filtriraj to objavo", + "filter_modal.title.status": "Filtrirajte objave", "follow_recommendations.done": "Opravljeno", "follow_recommendations.heading": "Sledite osebam, katerih objave želite videti! Tukaj je nekaj predlogov.", "follow_recommendations.lead": "Objave oseb, ki jim sledite, se bodo prikazale v kronološkem zaporedju v vašem domačem viru. Ne bojte se storiti napake, osebam enako enostavno nehate slediti kadar koli!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}", "status.embed": "Vgradi", "status.favourite": "Priljubljen", - "status.filter": "Filter this post", + "status.filter": "Filtriraj to objavo", "status.filtered": "Filtrirano", "status.hide": "Skrij tut", "status.history.created": "{name}: ustvarjeno {date}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 728cfac11..6c9529a32 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -9,21 +9,21 @@ "account.browse_more_on_origin_server": "மேலும் உலாவ சுயவிவரத்திற்குச் செல்க", "account.cancel_follow_request": "பின்தொடரும் கோரிக்கையை நிராகரி", "account.direct": "நேரடி செய்தி @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "@{name} பதிவிட்டல் எனக்கு தெரியபடுத்த வேண்டாம்", "account.domain_blocked": "மறைக்கப்பட்டத் தளங்கள்", "account.edit_profile": "சுயவிவரத்தை மாற்று", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "@{name} பதிவிட்டல் எனக்குத் தெரியப்படுத்தவும்", "account.endorse": "சுயவிவரத்தில் வெளிப்படுத்து", "account.follow": "பின்தொடர்", "account.followers": "பின்தொடர்பவர்கள்", "account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.", "account.followers_counter": "{count, plural, one {{counter} வாசகர்} other {{counter} வாசகர்கள்}}", - "account.following": "Following", + "account.following": "பின்தொடரும்", "account.following_counter": "{count, plural,one {{counter} சந்தா} other {{counter} சந்தாக்கள்}}", "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.", "account.follows_you": "உங்களைப் பின்தொடர்கிறார்", "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}", - "account.joined": "Joined {date}", + "account.joined": "சேர்ந்த நாள் {date}", "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}", "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.", "account.media": "ஊடகங்கள்", @@ -41,25 +41,25 @@ "account.statuses_counter": "{count, plural, one {{counter} டூட்} other {{counter} டூட்டுகள்}}", "account.unblock": "@{name} மீது தடை நீக்குக", "account.unblock_domain": "{domain} ஐ காண்பி", - "account.unblock_short": "Unblock", + "account.unblock_short": "தடையை நீக்கு", "account.unendorse": "சுயவிவரத்தில் இடம்பெற வேண்டாம்", "account.unfollow": "பின்தொடர்வதை நிறுத்துக", "account.unmute": "@{name} இன் மீது மௌனத் தடையை நீக்குக", "account.unmute_notifications": "@{name} இலிருந்து அறிவிப்புகளின் மீது மௌனத் தடையை நீக்குக", - "account.unmute_short": "Unmute", + "account.unmute_short": "அமைதியை நீக்கு", "account_note.placeholder": "குறிப்பு ஒன்றை சேர்க்க சொடுக்கவும்", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "பதிவுசெய்த பிறகு நாள்தோறும் பயனர் தக்கவைப்பு விகிதம்", + "admin.dashboard.monthly_retention": "பதிவுசெய்த பிறகு மாதந்தோறும் பயனர் தக்கவைப்பு விகிதம்", + "admin.dashboard.retention.average": "சராசரி", + "admin.dashboard.retention.cohort": "பதிவுசெய்த மாதம்", + "admin.dashboard.retention.cohort_size": "புதிய பயனர்கள்", "alert.rate_limited.message": "{retry_time, time, medium} க்கு பிறகு மீண்டும் முயற்சிக்கவும்.", "alert.rate_limited.title": "பயன்பாடு கட்டுப்படுத்தப்பட்டுள்ளது", "alert.unexpected.message": "எதிர்பாராத பிழை ஏற்பட்டுவிட்டது.", "alert.unexpected.title": "அச்சச்சோ!", "announcement.announcement": "அறிவிப்பு", - "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "attachments_list.unprocessed": "(செயலாக்கப்படாதது)", + "audio.hide": "ஆடியோவை மறை", "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}", "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்", "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", @@ -71,7 +71,7 @@ "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", "column.community": "சுய நிகழ்வு காலவரிசை", - "column.direct": "Direct messages", + "column.direct": "நேரடி செய்திகள்", "column.directory": "சுயவிவரங்களை உலாவு", "column.domain_blocks": "மறைந்திருக்கும் திரளங்கள்", "column.favourites": "பிடித்தவைகள்", @@ -93,10 +93,10 @@ "community.column_settings.local_only": "அருகிலிருந்து மட்டுமே", "community.column_settings.media_only": "படங்கள் மட்டுமே", "community.column_settings.remote_only": "தொலைவிலிருந்து மட்டுமே", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "மொழியை மாற்று", + "compose.language.search": "தேடல் மொழிகள்...", "compose_form.direct_message_warning_learn_more": "மேலும் அறிய", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Mastodonல் உள்ள பதிவுகள் முறையாக என்க்ரிப்ட்(encrypt) செய்யபடவில்லை. அதனால் முக்கிய தகவல்களை இங்கே பகிர வேண்டாம்.", "compose_form.hashtag_warning": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.", "compose_form.lock_disclaimer": "உங்கள் கணக்கு {locked} செய்யப்படவில்லை. உங்கள் பதிவுகளை யார் வேண்டுமானாலும் பின்தொடர்ந்து காணலாம்.", "compose_form.lock_disclaimer.lock": "பூட்டப்பட்டது", @@ -107,9 +107,9 @@ "compose_form.poll.remove_option": "இந்தத் தேர்வை அகற்று", "compose_form.poll.switch_to_multiple": "பல தேர்வுகளை அனுமதிக்குமாறு மாற்று", "compose_form.poll.switch_to_single": "ஒரே ஒரு தேர்வை மட்டும் அனுமதிக்குமாறு மாற்று", - "compose_form.publish": "Publish", + "compose_form.publish": "வெளியிடு", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "மாற்றங்களை சேமி", "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்றப் படம் இல்லை எனக் குறியிடு", "compose_form.sensitive.marked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்பட்டுள்ளது", "compose_form.sensitive.unmarked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்படவில்லை", @@ -124,8 +124,8 @@ "confirmations.delete.message": "இப்பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", "confirmations.delete_list.confirm": "நீக்கு", "confirmations.delete_list.message": "இப்பட்டியலை நிரந்தரமாக நீக்க நிச்சயம் விரும்புகிறீர்களா?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "நிராகரி", + "confirmations.discard_edit_media.message": "சேமிக்கப்படாத மாற்றங்கள் ஊடக விளக்கம் அல்லது முன்னோட்டத்தில் உள்ளது. அவற்றை நிராகரிக்கவா?", "confirmations.domain_block.confirm": "முழு களத்தையும் மறை", "confirmations.domain_block.message": "நீங்கள் முழு {domain} களத்தையும் நிச்சயமாக, நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா? பெரும்பாலும் சில குறிப்பிட்ட பயனர்களைத் தடுப்பதே போதுமானது. முழு களத்தையும் தடுத்தால், அதிலிருந்து வரும் எந்தப் பதிவையும் உங்களால் காண முடியாது, மேலும் அப்பதிவுகள் குறித்த அறிவிப்புகளும் உங்களுக்கு வராது. அந்தக் களத்தில் இருக்கும் பின்தொடர்பவர்கள் உங்கள் பக்கத்திலிருந்து நீக்கப்படுவார்கள்.", "confirmations.logout.confirm": "வெளியேறு", @@ -150,7 +150,7 @@ "embed.instructions": "இந்தப் பதிவை உங்கள் வலைதளத்தில் பொதிக்கக் கீழே உள்ள வரிகளை காப்பி செய்யவும்.", "embed.preview": "பார்க்க இப்படி இருக்கும்:", "emoji_button.activity": "செயல்பாடு", - "emoji_button.clear": "Clear", + "emoji_button.clear": "அழி", "emoji_button.custom": "தனிப்பயன்", "emoji_button.flags": "கொடிகள்", "emoji_button.food": "உணவு மற்றும் பானம்", @@ -164,13 +164,13 @@ "emoji_button.search_results": "தேடல் முடிவுகள்", "emoji_button.symbols": "குறியீடுகள்", "emoji_button.travel": "சுற்றுலா மற்றும் இடங்கள்", - "empty_column.account_suspended": "Account suspended", + "empty_column.account_suspended": "கணக்கு இடைநீக்கப்பட்டது", "empty_column.account_timeline": "டூட்டுகள் ஏதும் இல்லை!", "empty_column.account_unavailable": "சுயவிவரம் கிடைக்கவில்லை", "empty_column.blocks": "நீங்கள் இதுவரை எந்தப் பயனர்களையும் முடக்கியிருக்கவில்லை.", "empty_column.bookmarked_statuses": "உங்களிடம் அடையாளக்குறியிட்ட டூட்டுகள் எவையும் இல்லை. அடையாளக்குறியிட்ட பிறகு அவை இங்கே காட்டப்படும்.", "empty_column.community": "உங்கள் மாஸ்டடான் முச்சந்தியில் யாரும் இல்லை. எதையேனும் எழுதி ஆட்டத்தைத் துவக்குங்கள்!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "உங்களுக்குத் தனிப்பட்ட செய்திகள் ஏதும் இல்லை. செய்தியை நீங்கள் அனுப்பும்போதோ அல்லது பெறும்போதோ, அது இங்கே காண்பிக்கப்படும்.", "empty_column.domain_blocks": "தடுக்கப்பட்டக் களங்கள் இதுவரை இல்லை.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "உங்களுக்குப் பிடித்த டூட்டுகள் இதுவரை இல்லை. ஒரு டூட்டில் நீங்கள் விருப்பக்குறி இட்டால், அது இங்கே காண்பிக்கப்படும்.", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 38539d512..9fcb877d3 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -198,21 +198,21 @@ "explore.trending_statuses": "โพสต์", "explore.trending_tags": "แฮชแท็ก", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "บริบทไม่ตรงกัน!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "การตั้งค่าตัวกรอง", + "filter_modal.added.settings_link": "หน้าการตั้งค่า", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.title": "เพิ่มตัวกรองแล้ว!", + "filter_modal.select_filter.context_mismatch": "ไม่นำไปใช้กับบริบทนี้", + "filter_modal.select_filter.expired": "หมดอายุแล้ว", + "filter_modal.select_filter.prompt_new": "หมวดหมู่ใหม่: {name}", + "filter_modal.select_filter.search": "ค้นหาหรือสร้าง", + "filter_modal.select_filter.subtitle": "ใช้หมวดหมู่ที่มีอยู่หรือสร้างหมวดหมู่ใหม่", + "filter_modal.select_filter.title": "กรองโพสต์นี้", + "filter_modal.title.status": "กรองโพสต์", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", "follow_recommendations.lead": "โพสต์จากผู้คนที่คุณติดตามจะแสดงตามลำดับเวลาในฟีดหน้าแรกของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้อย่างง่ายดายเมื่อใดก็ตาม!", @@ -487,7 +487,7 @@ "status.edited_x_times": "แก้ไข {count, plural, other {{count} ครั้ง}}", "status.embed": "ฝัง", "status.favourite": "ชื่นชอบ", - "status.filter": "Filter this post", + "status.filter": "กรองโพสต์นี้", "status.filtered": "กรองอยู่", "status.hide": "ซ่อนโพสต์", "status.history.created": "{name} ได้สร้างเมื่อ {date}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 35c888e47..bb67ef2f6 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -197,22 +197,22 @@ "explore.trending_links": "Haberler", "explore.trending_statuses": "Gönderiler", "explore.trending_tags": "Etiketler", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Bu filtre kategorisi, bu gönderide eriştiğin bağlama uymuyor. Eğer gönderinin bu bağlamda da filtrelenmesini istiyorsanız, filtreyi düzenlemeniz gerekiyor.", + "filter_modal.added.context_mismatch_title": "Bağlam uyumsuzluğu!", + "filter_modal.added.expired_explanation": "Bu filtre kategorisinin süresi dolmuş, filtreyi uygulamak için bitiş tarihini değiştirmeniz gerekiyor.", + "filter_modal.added.expired_title": "Süresi dolmuş filtre!", + "filter_modal.added.review_and_configure": "Bu filtre kategorisini gözden geçirmek ve daha ayrıntılı bir şekilde yapılandırmak için {settings_link} adresine gidin.", + "filter_modal.added.review_and_configure_title": "Filtre ayarları", + "filter_modal.added.settings_link": "ayarlar sayfası", + "filter_modal.added.short_explanation": "Bu gönderi şu filtre kategorisine eklendi: {title}.", + "filter_modal.added.title": "Filtre eklendi!", + "filter_modal.select_filter.context_mismatch": "bu bağlama uymuyor", + "filter_modal.select_filter.expired": "süresi dolmuş", + "filter_modal.select_filter.prompt_new": "Yeni kategori: {name}", + "filter_modal.select_filter.search": "Ara veya oluştur", + "filter_modal.select_filter.subtitle": "Mevcut bir kategoriyi kullan veya yeni bir tane oluştur", + "filter_modal.select_filter.title": "Bu gönderiyi filtrele", + "filter_modal.title.status": "Bir gönderi filtrele", "follow_recommendations.done": "Tamam", "follow_recommendations.heading": "Gönderilerini görmek isteyeceğiniz kişileri takip edin! Burada bazı öneriler bulabilirsiniz.", "follow_recommendations.lead": "Takip ettiğiniz kişilerin gönderileri anasayfa akışınızda kronolojik sırada görünmeye devam edecek. Hata yapmaktan çekinmeyin, kişileri istediğiniz anda kolayca takipten çıkabilirsiniz!", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi", "status.embed": "Gömülü", "status.favourite": "Favorilerine ekle", - "status.filter": "Filter this post", + "status.filter": "Bu gönderiyi filtrele", "status.filtered": "Filtrelenmiş", "status.hide": "Gönderiyi sakla", "status.history.created": "{name} oluşturdu {date}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index e1b10445d..a14e2125b 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -197,22 +197,22 @@ "explore.trending_links": "Новини", "explore.trending_statuses": "Дописи", "explore.trending_tags": "Хештеґи", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ця категорія фільтра не застосовується до контексту, в якому ви отримали доступ до цього допису. Якщо ви хочете, щоб дописи також фільтрувалися за цим контекстом, вам доведеться редагувати фільтр.", + "filter_modal.added.context_mismatch_title": "Невідповідність контексту!", + "filter_modal.added.expired_explanation": "Категорія цього фільтра застаріла, Вам потрібно змінити дату закінчення терміну дії, щоб застосувати її.", + "filter_modal.added.expired_title": "Застарілий фільтр!", + "filter_modal.added.review_and_configure": "Щоб розглянути та далі налаштувати цю категорію фільтрів, перейдіть на {settings_link}.", + "filter_modal.added.review_and_configure_title": "Налаштування фільтра", + "filter_modal.added.settings_link": "сторінка налаштувань", + "filter_modal.added.short_explanation": "Цей допис було додано до такої категорії фільтра: {title}.", + "filter_modal.added.title": "Фільтр додано!", + "filter_modal.select_filter.context_mismatch": "не застосовується до цього контексту", + "filter_modal.select_filter.expired": "застарілий", + "filter_modal.select_filter.prompt_new": "Нова категорія: {name}", + "filter_modal.select_filter.search": "Пошук або створення", + "filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову", + "filter_modal.select_filter.title": "Фільтрувати цей допис", + "filter_modal.title.status": "Фільтрувати допис", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Підпишіться на людей, чиї дописи ви хочете бачити! Ось деякі пропозиції.", "follow_recommendations.lead": "Дописи від людей, за якими ви стежите, з'являться в хронологічному порядку у вашій домашній стрічці. Не бійся помилятися, ви можете відписатися від людей так само легко в будь-який час!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Відредаговано {count, plural, one {{count} раз} few {{count} рази} many {{counter} разів} other {{counter} разів}}", "status.embed": "Вбудувати", "status.favourite": "Подобається", - "status.filter": "Filter this post", + "status.filter": "Фільтрувати цей допис", "status.filtered": "Відфільтровано", "status.hide": "Сховати дмух", "status.history.created": "{name} створює {date}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 3dc6db112..d1b5684af 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -197,22 +197,22 @@ "explore.trending_links": "Tin tức", "explore.trending_statuses": "Tút", "explore.trending_tags": "Hashtag", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Danh mục bộ lọc này không áp dụng cho ngữ cảnh mà bạn đã truy cập tút này. Nếu bạn muốn tút cũng được lọc trong ngữ cảnh này, bạn sẽ phải chỉnh sửa bộ lọc.", + "filter_modal.added.context_mismatch_title": "Bối cảnh không phù hợp!", + "filter_modal.added.expired_explanation": "Danh mục bộ lọc này đã hết hạn, bạn sẽ cần thay đổi ngày hết hạn để áp dụng.", + "filter_modal.added.expired_title": "Bộ lọc đã hết hạn!", + "filter_modal.added.review_and_configure": "Để xem lại và định cấu hình thêm danh mục bộ lọc này, hãy xem {settings_link}.", + "filter_modal.added.review_and_configure_title": "Thiết lập bộ lọc", + "filter_modal.added.settings_link": "trang cài đặt", + "filter_modal.added.short_explanation": "Tút này đã được thêm vào danh mục bộ lọc sau: {title}.", + "filter_modal.added.title": "Đã thêm bộ lọc!", + "filter_modal.select_filter.context_mismatch": "không áp dụng cho bối cảnh này", + "filter_modal.select_filter.expired": "hết hạn", + "filter_modal.select_filter.prompt_new": "Danh mục mới: {name}", + "filter_modal.select_filter.search": "Tìm kiếm hoặc tạo mới", + "filter_modal.select_filter.subtitle": "Sử dụng một danh mục hiện có hoặc tạo một danh mục mới", + "filter_modal.select_filter.title": "Lọc tút này", + "filter_modal.title.status": "Lọc một tút", "follow_recommendations.done": "Xong", "follow_recommendations.heading": "Theo dõi những người bạn muốn đọc tút của họ! Dưới đây là vài gợi ý.", "follow_recommendations.lead": "Tút từ những người bạn theo dõi sẽ hiện theo thứ tự thời gian trên bảng tin. Đừng ngại, bạn có thể dễ dàng ngưng theo dõi họ bất cứ lúc nào!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Đã sửa {count, plural, other {{count} lần}}", "status.embed": "Nhúng", "status.favourite": "Thích", - "status.filter": "Filter this post", + "status.filter": "Lọc tút này", "status.filtered": "Bộ lọc", "status.hide": "Ẩn tút", "status.history.created": "{name} tạo lúc {date}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 9241eeec8..5d0dfa202 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -197,22 +197,22 @@ "explore.trending_links": "最新消息", "explore.trending_statuses": "嘟文", "explore.trending_tags": "话题标签", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "此过滤器分类不适用访问过嘟文的环境中。如果你想要在环境中过滤嘟文,你必须编辑此过滤器。", + "filter_modal.added.context_mismatch_title": "环境不匹配!", + "filter_modal.added.expired_explanation": "此过滤器分类已过期,你需要修改到期日期才能应用。", + "filter_modal.added.expired_title": "过滤器已过期!", + "filter_modal.added.review_and_configure": "要审核并进一步配置此过滤器分类,请前往{settings_link}。", + "filter_modal.added.review_and_configure_title": "过滤器设置", + "filter_modal.added.settings_link": "设置页面", + "filter_modal.added.short_explanation": "此嘟文已添加到以下过滤器分类:{title}。", + "filter_modal.added.title": "过滤器已添加 !", + "filter_modal.select_filter.context_mismatch": "不适用于此环境", + "filter_modal.select_filter.expired": "已过期", + "filter_modal.select_filter.prompt_new": "新分类:{name}", + "filter_modal.select_filter.search": "搜索或创建", + "filter_modal.select_filter.subtitle": "使用一个已存在分类,或创建一个新分类", + "filter_modal.select_filter.title": "过滤此嘟文", + "filter_modal.title.status": "过滤一条嘟文", "follow_recommendations.done": "完成", "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。", "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!", @@ -487,7 +487,7 @@ "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "嵌入", "status.favourite": "喜欢", - "status.filter": "Filter this post", + "status.filter": "过滤此嘟文", "status.filtered": "已过滤", "status.hide": "屏蔽嘟文", "status.history.created": "{name} 创建于 {date}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 13eee62de..337cad60b 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -197,22 +197,22 @@ "explore.trending_links": "最新消息", "explore.trending_statuses": "嘟文", "explore.trending_tags": "主題標籤", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "此過濾器類別不是用您所存取嘟文的情境。若您想要此嘟文被於此情境被過濾,您必須編輯過濾器。", + "filter_modal.added.context_mismatch_title": "不符合情境!", + "filter_modal.added.expired_explanation": "此過濾器類別已失效,您需要更新過期日期以套用。", + "filter_modal.added.expired_title": "過期的過濾器!", + "filter_modal.added.review_and_configure": "若欲檢視和進一步設定此過濾器類別,請至 {settings_link}。", + "filter_modal.added.review_and_configure_title": "過濾器設定", + "filter_modal.added.settings_link": "設定頁面", + "filter_modal.added.short_explanation": "此嘟文已被新增至以下過濾器類別:{title}。", + "filter_modal.added.title": "已新增過濾器!", + "filter_modal.select_filter.context_mismatch": "不是用目前情境", + "filter_modal.select_filter.expired": "已過期", + "filter_modal.select_filter.prompt_new": "新類別:{name}", + "filter_modal.select_filter.search": "搜尋或新增", + "filter_modal.select_filter.subtitle": "使用既有的類別或是新增", + "filter_modal.select_filter.title": "過濾此嘟文", + "filter_modal.title.status": "過濾一則嘟文", "follow_recommendations.done": "完成", "follow_recommendations.heading": "跟隨您想檢視其嘟文的人!這裡有一些建議。", "follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", @@ -487,7 +487,7 @@ "status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "內嵌", "status.favourite": "最愛", - "status.filter": "Filter this post", + "status.filter": "過濾此嘟文", "status.filtered": "已過濾", "status.hide": "隱藏嘟文", "status.history.created": "{name} 於 {date} 建立", diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index ad034fdbc..105f5a550 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -38,3 +38,13 @@ pt-BR: email: blocked: usa provedor de e-mail não permitido unreachable: parece não existir + role_id: + elevated: não pode ser maior do que sua função atual + user_role: + attributes: + permissions_as_keys: + elevated: não pode incluir permissões que a sua função atual não possui + own_role: não pode ser alterado com sua função atual + position: + elevated: não pode ser maior do que sua função atual + own_role: não pode ser alterado com sua função atual diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index 2a267cfd2..fb8c6dde5 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -44,4 +44,8 @@ ru: attributes: permissions_as_keys: dangerous: включить разрешения, небезопасные для базовой роли + elevated: не может включать разрешения, которыми не обладает ваша текущая роль + own_role: невозможно изменить с вашей текущей ролью + position: + elevated: не может быть выше, чем ваша текущая роль own_role: невозможно изменить с вашей текущей ролью diff --git a/config/locales/ar.yml b/config/locales/ar.yml index bac1e661d..432c10ce0 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -299,7 +299,6 @@ ar: create_unavailable_domain_html: قام %{name} بتوقيف التوصيل للنطاق %{target} demote_user_html: قام %{name} بخفض الرتبة الوظيفية لـ%{target} destroy_announcement_html: قام %{name} بحذف الإعلان %{target} - destroy_custom_emoji_html: قام %{name} بحذف الإيموجي %{target} destroy_domain_allow_html: قام %{name} بمنع الاتحاد مع النطاق %{target} destroy_domain_block_html: قام %{name} برفع الحظر عن النطاق %{target} destroy_email_domain_block_html: قام %{name} برفع الحظر عن نطاق البريد الإلكتروني %{target} @@ -331,7 +330,6 @@ ar: update_custom_emoji_html: قام %{name} بتحديث الإيموجي %{target} update_domain_block_html: قام %{name} بتحديث كتلة النطاق %{target} update_status_html: قام %{name} بتحديث منشور من %{target} - deleted_status: "(منشور محذوف)" empty: لم يتم العثور على سجلات. filter_by_action: تصفية بحسب الإجراء filter_by_user: تصفية حسب المستخدم @@ -688,9 +686,6 @@ ar: desc_html: عرض الخيط العمومي على صفحة الاستقبال title: مُعاينة الخيط العام title: إعدادات الموقع - trendable_by_default: - desc_html: يؤثر على علامات الوسوم التي لم يكن مسموح بها مسبقاً - title: السماح للوسوم بالظهور على المتداوَلة بدون مراجعة مسبقة trends: desc_html: عرض علني للوسوم المستعرضة سابقاً التي هي رائجة الآن title: الوسوم المتداولة @@ -1144,18 +1139,6 @@ ar: admin: sign_up: subject: أنشأ %{name} حسابًا - digest: - action: معاينة كافة الإشعارات - body: هذا هو مُلَخَّص الرسائل التي فاتتك وذلك منذ آخر زيارة لك في %{since} - mention: "%{name} أشار إليك في:" - new_followers_summary: - few: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - many: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - one: و لقد تحصّلتَ كذلك على مُتابِع آخَر بينما كنتَ غائبًا! هذا شيء رائع! - other: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - two: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - zero: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - title: أثناء فترة غيابك... favourite: body: 'أُعجب %{name} بمنشورك:' subject: أُعجِب %{name} بمنشورك diff --git a/config/locales/ast.yml b/config/locales/ast.yml index f4765360e..2d175592b 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -314,9 +314,6 @@ ast: warning: followers: Esta aición va mover tolos siguidores de la cuenta actual a la nueva notification_mailer: - digest: - body: Equí hai un resume de los mensaxes que nun viesti dende la última visita'l %{since} - mention: "%{name} mentóte en:" favourite: title: Favoritu nuevu follow: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index a7b8ffc23..43b8a13ba 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -230,12 +230,6 @@ bg: images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения too_many: Не мога да прикача повече от 4 файла notification_mailer: - digest: - body: Ето кратко резюме на нещата, които се случиха от последното ти посещение на %{since} - mention: "%{name} те спомена в:" - new_followers_summary: - one: Имаш един нов последовател! Ура! - other: Имаш %{count} нови последователи! Изумително! favourite: body: 'Публикацията ти беше харесана от %{name}:' subject: "%{name} хареса твоята публикация" diff --git a/config/locales/br.yml b/config/locales/br.yml index 61e85d163..4d34f3388 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -89,7 +89,6 @@ br: action_logs: action_types: destroy_status: Dilemel ar statud - deleted_status: "(statud dilemet)" announcements: new: create: Sevel ur gemenn diff --git a/config/locales/ca.yml b/config/locales/ca.yml index dfc1c1e27..a03e37cc6 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -235,17 +235,21 @@ ca: approve_user: Aprova l'usuari assigned_to_self_report: Assigna l'informe change_email_user: Canvia l'adreça electrònica per l'usuari + change_role_user: Canvia el Rol del Usuari confirm_user: Confirma l'usuari create_account_warning: Crea un avís create_announcement: Crea un anunci + create_canonical_email_block: Crea un bloqueig de correu electrònic create_custom_emoji: Crea un emoji personalitzat create_domain_allow: Crea un domini permès create_domain_block: Crea un bloqueig de domini create_email_domain_block: Crea un bloqueig de domini d'adreça de correu create_ip_block: Crear regla IP create_unavailable_domain: Crea un domini no disponible + create_user_role: Crea Rol demote_user: Degrada l'usuari destroy_announcement: Esborra l'anunci + destroy_canonical_email_block: Esborra el bloqueig de correu electrònic destroy_custom_emoji: Esborra l'emoji personalitzat destroy_domain_allow: Esborra el domini permès destroy_domain_block: Esborra el bloqueig de domini @@ -254,6 +258,7 @@ ca: destroy_ip_block: Eliminar regla IP destroy_status: Esborrar la publicació destroy_unavailable_domain: Esborra domini no disponible + destroy_user_role: Destrueix Rol disable_2fa_user: Desactiva 2FA disable_custom_emoji: Desactiva l'emoji personalitzat disable_sign_in_token_auth_user: Desactivar l'autenticació de token per correu per l'usuari @@ -280,24 +285,30 @@ ca: update_announcement: Actualitza l'anunci update_custom_emoji: Actualitza l'emoji personalitzat update_domain_block: Actualitza el Bloqueig de Domini + update_ip_block: Actualitza norma IP update_status: Actualitza l'estat + update_user_role: Actualitza Rol actions: approve_appeal_html: "%{name} ha aprovat l'apel·lació a la decisió de moderació de %{target}" approve_user_html: "%{name} ha aprovat el registre de %{target}" assigned_to_self_report_html: "%{name} han assignat l'informe %{target} a ells mateixos" change_email_user_html: "%{name} ha canviat l'adreça de correu electrònic del usuari %{target}" + change_role_user_html: "%{name} ha canviat el rol de %{target}" confirm_user_html: "%{name} ha confirmat l'adreça de correu electrònic de l'usuari %{target}" create_account_warning_html: "%{name} ha enviat un avís a %{target}" create_announcement_html: "%{name} ha creat un nou anunci %{target}" + create_canonical_email_block_html: "%{name} ha bloquejat l'adreça de correu electrònic amb el hash %{target}" create_custom_emoji_html: "%{name} ha pujat un emoji nou %{target}" create_domain_allow_html: "%{name} ha permès la federació amb el domini %{target}" create_domain_block_html: "%{name} ha bloquejat el domini %{target}" create_email_domain_block_html: "%{name} ha bloquejat el domini de correu electrònic %{target}" create_ip_block_html: "%{name} ha creat una regla per a l'IP %{target}" create_unavailable_domain_html: "%{name} ha aturat el lliurament al domini %{target}" + create_user_role_html: "%{name} ha creat el rol %{target}" demote_user_html: "%{name} ha degradat l'usuari %{target}" destroy_announcement_html: "%{name} ha eliminat l'anunci %{target}" - destroy_custom_emoji_html: "%{name} ha destruït l'emoji %{target}" + destroy_canonical_email_block_html: "%{name} ha desbloquejat el correu electrònic amb el hash %{target}" + destroy_custom_emoji_html: "%{name} ha esborrat l'emoji %{target}" destroy_domain_allow_html: "%{name} no permet la federació amb el domini %{target}" destroy_domain_block_html: "%{name} ha desbloquejat el domini %{target}" destroy_email_domain_block_html: "%{name} ha desbloquejat el domini de correu electrònic %{target}" @@ -305,6 +316,7 @@ ca: destroy_ip_block_html: "%{name} ha esborrat la regla per a l'IP %{target}" destroy_status_html: "%{name} ha eliminat la publicació de %{target}" destroy_unavailable_domain_html: "%{name} ha représ el lliurament delivery al domini %{target}" + destroy_user_role_html: "%{name} ha esborrat el rol %{target}" disable_2fa_user_html: "%{name} ha desactivat el requisit de dos factors per a l'usuari %{target}" disable_custom_emoji_html: "%{name} ha desactivat l'emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} ha desactivat l'autenticació de token per correu per a %{target}" @@ -331,8 +343,9 @@ ca: update_announcement_html: "%{name} ha actualitzat l'anunci %{target}" update_custom_emoji_html: "%{name} ha actualitzat l'emoji %{target}" update_domain_block_html: "%{name} ha actualitzat el bloqueig de domini per a %{target}" + update_ip_block_html: "%{name} ha canviat la norma per la IP %{target}" update_status_html: "%{name} ha actualitzat l'estat de %{target}" - deleted_status: "(publicació esborrada)" + update_user_role_html: "%{name} ha canviat el rol %{target}" empty: No s’han trobat registres. filter_by_action: Filtra per acció filter_by_user: Filtra per usuari @@ -795,8 +808,8 @@ ca: title: Permet l'accés no autenticat a la línia de temps pública title: Configuració del lloc trendable_by_default: - desc_html: Afecta a les etiquetes que no s'havien rebutjat prèviament - title: Permet que les etiquetes passin a la tendència sense revisió prèvia + desc_html: El contingut específic de la tendència encara pot explícitament no estar permès + title: Permet tendències sense revisió prèvia trends: desc_html: Mostra públicament les etiquetes revisades anteriorment que actualment estan en tendència title: Etiquetes tendència @@ -1181,6 +1194,8 @@ ca: edit: add_keyword: Afegeix paraula clau keywords: Paraules clau + statuses: Apunts individuals + statuses_hint_html: Aquest filtre aplica als apunts individuals seleccionats independentment de si coincideixen amb les paraules clau de sota. Revisa o elimina els apunts des d'el filtre. title: Editar filtre errors: deprecated_api_multiple_keywords: Aquests paràmetres no poden ser canviats des d'aquesta aplicació perquè apliquen a més d'un filtre per paraula clau. Utilitza una aplicació més recent o la interfície web. @@ -1194,10 +1209,23 @@ ca: keywords: one: "%{count} paraula clau" other: "%{count} paraules clau" + statuses: + one: "%{count} apunt" + other: "%{count} apunts" + statuses_long: + one: "%{count} apunt individual oculta" + other: "%{count} apunts individuals ocultats" title: Filtres new: save: Desa el nou filtre title: Afegir un nou filtre + statuses: + back_to_filter: Tornar al filtre + batch: + remove: Eliminar del filtre + index: + hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més apunts a aquest filtre des de l'interfície Web. + title: Apunts filtrats footer: developers: Desenvolupadors more: Més… @@ -1205,12 +1233,22 @@ ca: trending_now: En tendència generic: all: Tot + all_items_on_page_selected_html: + one: "%{count} article d'aquesta s'ha seleccionat." + other: Tots %{count} articles d'aquesta pàgina estan seleccionats. + all_matching_items_selected_html: + one: "%{count} article coincident amb la teva cerca està seleccionat." + other: Tots %{count} articles coincidents amb la teva cerca estan seleccionats. changes_saved_msg: Els canvis s'han desat correctament! copy: Copiar delete: Esborra + deselect: Desfer selecció none: Cap order_by: Ordena per save_changes: Desa els canvis + select_all_matching_items: + one: Selecciona %{count} article coincident amb la teva cerca. + other: Selecciona tots %{count} articles coincidents amb la teva cerca. today: avui validation_errors: one: Alguna cosa no va bé! Si us plau, revisa l'error @@ -1319,17 +1357,6 @@ ca: subject: "%{name} ha presentat un informe" sign_up: subject: "%{name} s'ha registrat" - digest: - action: Mostra totes les notificacions - body: Un resum del que et vas perdre des de 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! - other: A més, has adquirit %{count} nous seguidors mentre estaves fora! Increïble! - subject: - one: "1 notificació nova des de la teva darrera visita 🐘" - other: "%{count} notificacions noves des de la teva darrera visita 🐘" - title: Durant la teva absència… favourite: body: "%{name} ha marcat com a favorit el teu estat:" subject: "%{name} ha marcat com a favorit el teu estat" diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 3e9f414df..6c91b571a 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -265,7 +265,6 @@ ckb: update_status: بەڕۆژکردنی دۆخ actions: update_status_html: "%{name} پۆستی نوێکراوە لەلایەن %{target}" - deleted_status: "(نووسراوە سڕاوە)" empty: هیچ لاگی کارنەدۆزرایەوە. filter_by_action: فلتەر کردن بە کردار filter_by_user: فلتەر کردن بە کردار @@ -643,9 +642,6 @@ ckb: desc_html: لینکەکە نیشان بدە بۆ هێڵی کاتی گشتی لەسەر پەڕەی نیشتنەوە و ڕێگە بە API بدە دەستگەیشتنی هەبێت بۆ هێڵی کاتی گشتی بەبێ سەلماندنی ڕەسەنایەتی title: ڕێگەبدە بە چوونە ژورەوەی نەسەلمێنراو بۆ هێڵی کاتی گشتی title: ڕێکخستنەکانی ماڵپەڕ - trendable_by_default: - desc_html: کاریگەری لەسەر هاشتاگی پێشوو کە پێشتر ڕێگە پێنەدراوە - title: ڕێگە بدە بە هاشتاگی بەرچاوکراوە بەبێ پێداچوونەوەی پێشوو trends: desc_html: بە ئاشکرا هاشتاگی پێداچوونەوەی پێشوو پیشان بدە کە ئێستا بەرچاوکراوەن title: هاشتاگی بەرچاوکراوە @@ -976,14 +972,6 @@ ckb: carry_mutes_over_text: ئەم بەکارهێنەرە گواسترایەوە بۆ %{acct}، تۆ بێدەنگت کردووە. copy_account_note_text: 'ئەم بەکارهێنەرە لە %{acct} ەوە گواستیەوە، تێبینیەکانی پێشووت دەربارەیان بوون:' notification_mailer: - digest: - action: پیشاندانی هەموو ئاگانامەکان - body: ئەمە کورتەی ئەو نامانەی لە دەستت دا لە دوا سەردانیت لە %{since} - mention: "%{name} ئاماژەی بە تۆ کرد لە:" - new_followers_summary: - one: لەکاتێک کە نەبوو ،شوێنکەوتوویێکی نوێت پەیداکرد،ئافەرم! - other: کاتیک کە نەبووی %{count} شوێنکەوتوویێکی نوێت پەیدا کرد! چ باشە! - title: لە غیابی تۆدا... favourite: body: 'دۆخت پەسەندکراوە لەلایەن %{name}:' subject: "%{name} دۆخی تۆی پەسەند کرد" diff --git a/config/locales/co.yml b/config/locales/co.yml index a71c187fc..9844cb8c1 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -269,7 +269,6 @@ co: create_unavailable_domain_html: "%{name} hà firmatu a distribuzione à u duminiu %{target}" demote_user_html: "%{name} hà ritrugradatu l’utilizatore %{target}" destroy_announcement_html: "%{name} hà sguassatu u novu annunziu %{target}" - destroy_custom_emoji_html: "%{name} hà sguassatu l'emoji %{target}" destroy_domain_allow_html: "%{name} hà sguassatu u duminiu %{target} da a lista bianca" destroy_domain_block_html: "%{name} hà sbluccatu u duminiu %{target}" destroy_email_domain_block_html: "%{name} hà messu u duminiu e-mail %{target} nant’a lista bianca" @@ -298,7 +297,6 @@ co: update_custom_emoji_html: "%{name} hà messu à ghjornu l’emoji %{target}" update_domain_block_html: "%{name} hà messu à ghjornu u blucchime di duminiu per %{target}" update_status_html: "%{name} hà cambiatu u statutu di %{target}" - deleted_status: "(statutu sguassatu)" empty: Nunda trovu. filter_by_action: Filtrà da azzione filter_by_user: Filtrà da utilizatore @@ -602,9 +600,6 @@ co: desc_html: Vede a linea pubblica nant’a pagina d’accolta title: Vista di e linee title: Parametri di u situ - trendable_by_default: - desc_html: Ùn affetta micca quelli chì sò digià stati ricusati - title: Auturizà l'hashtag à esse in tindenze senza verificazione trends: desc_html: Mustrà à u pubblicu i hashtag chì sò stati digià verificati è chì sò in e tendenze avà title: Tendenze di hashtag @@ -962,14 +957,6 @@ co: carry_mutes_over_text: St'utilizatore hà traslucatu dapoi %{acct}, ch'aviate piattatu. copy_account_note_text: 'St''utilizatore hà traslucatu dapoi %{acct}, eccu e vostr''anziane note nant''à ellu:' notification_mailer: - digest: - action: Vede tutte e nutificazione - body: Eccu cio ch’avete mancatu dapoi à a vostr’ultima visita u %{since} - mention: "%{name} v’hà mintuvatu·a in:" - new_followers_summary: - one: Avete ancu un’abbunatu novu! - other: Avete ancu %{count} abbunati novi! - title: Dapoi l’ultima volta… favourite: body: "%{name} hà aghjuntu u vostru statutu à i so favuriti :" subject: "%{name} hà messu u vostru post in i so favuriti" diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 3a58fd23b..b0ab498ea 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -111,6 +111,7 @@ cs: avatar: Avatar by_domain: Doména change_email: + changed_msg: E-mail úspěšně změněn! current_email: Současný e-mail label: Změnit e-mail new_email: Nový e-mail @@ -304,7 +305,6 @@ cs: create_unavailable_domain_html: "%{name} zastavil doručování na doménu %{target}" demote_user_html: Uživatel %{name} degradoval uživatele %{target} destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target} - destroy_custom_emoji_html: Uživatel %{name} zničil emoji %{target} destroy_domain_allow_html: Uživatel %{name} zakázal federaci s doménou %{target} destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target} destroy_email_domain_block_html: Uživatel %{name} odblokoval e-mailovou doménu %{target} @@ -339,7 +339,6 @@ cs: update_custom_emoji_html: Uživatel %{name} aktualizoval emoji %{target} update_domain_block_html: "%{name} aktualizoval blokaci domény %{target}" update_status_html: Uživatel %{name} aktualizoval příspěvek uživatele %{target} - deleted_status: "(smazaný příspěvek)" empty: Nebyly nalezeny žádné záznamy. filter_by_action: Filtrovat podle akce filter_by_user: Filtrovat podle uživatele @@ -803,9 +802,6 @@ cs: desc_html: Zobrazit na hlavní stránce odkaz na veřejnou časovou osu a povolit přístup na veřejnou časovou osu pomocí API bez autentizace title: Povolit neautentizovaný přístup k časové ose title: Nastavení stránky - trendable_by_default: - desc_html: Ovlivňuje hashtagy, které nebyly dříve zakázány - title: Povolit zobrazení hashtagů mezi populárními i bez předchozího posouzení trends: desc_html: Veřejně zobrazit dříve schválený obsah, který je zrovna populární title: Trendy @@ -1196,14 +1192,26 @@ cs: public: Veřejné časové osy thread: Konverzace edit: + add_keyword: Přidat klíčové slovo + keywords: Klíčová slova title: Upravit filtr errors: + deprecated_api_multiple_keywords: Tyto parametry nelze změnit z této aplikace, protože se vztahují na více než jedno klíčové slovo filtru. Použijte novější aplikaci nebo webové rozhraní. invalid_context: Nebyl poskytnut žádný nebo jen neplatný kontext index: + contexts: Filtruje %{contexts} delete: Smazat empty: Nemáte žádný filtr. + expires_in: Vyprší za %{distance} + expires_on: Vyprší %{date} + keywords: + few: "%{count} klíčová slova" + many: "%{count} klíčových slov" + one: "%{count} klíčové slovo" + other: "%{count} klíčových slov" title: Filtry new: + save: Uložit nový filtr title: Přidat nový filtr footer: developers: Vývojáři @@ -1330,21 +1338,6 @@ cs: subject: Uživatel %{name} podal hlášení sign_up: subject: Uživatel %{name} se zaregistroval - digest: - action: Zobrazit všechna oznámení - body: Zde najdete stručný souhrn zpráv, které jste zmeškali od vaší poslední návštěvy %{since} - mention: 'Uživatel %{name} vás zmínil v:' - new_followers_summary: - few: Zatímco jste byli pryč jste navíc získali %{count} nové sledující! Skvělé! - many: Zatímco jste byli pryč jste navíc získali %{count} nových sledujících! Úžasné! - one: Zatímco jste byli pryč jste navíc získali jednoho nového sledujícího! Hurá! - other: Zatímco jste byli pryč jste navíc získali %{count} nových sledujících! Úžasné! - subject: - few: "%{count} nová oznámení od vaší poslední návštěvy 🐘" - many: "%{count} nových oznámení od vaší poslední návštěvy 🐘" - one: "1 nové oznámení od vaší poslední návštěvy 🐘" - other: "%{count} nových oznámení od vaší poslední návštěvy 🐘" - title: Ve vaší nepřítomnosti… favourite: body: 'Váš příspěvek si oblíbil uživatel %{name}:' subject: Uživatel %{name} si oblíbil váš příspěvek diff --git a/config/locales/cy.yml b/config/locales/cy.yml index a1e9835d6..7b6a0ef70 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -257,7 +257,6 @@ cy: update_status: Diweddaru Statws actions: memorialize_account_html: Newidodd %{name} gyfrif %{target} i dudalen goffa - deleted_status: "(statws wedi ei ddileu)" empty: Dim logiau ar gael. filter_by_action: Hidlo wrth weithred filter_by_user: Hidlo wrth ddefnyddiwr @@ -510,9 +509,6 @@ cy: desc_html: Dangos ffrwd gyhoeddus ar y dudalen lanio title: Rhagolwg o'r ffrwd title: Gosodiadau'r wefan - trendable_by_default: - desc_html: Yn ddylanwadu ar hashnodau sydd heb ei rhwystro yn y gorffenol - title: Gadael hashnodau i dueddu heb adolygiad cynt trends: desc_html: Arddangos hashnodau a adolygwyd yn gynt yn gyhoeddus sydd yn tueddu yn bresennol title: Hashnodau tueddig @@ -835,18 +831,6 @@ cy: carry_mutes_over_text: Wnaeth y defnyddiwr symud o %{acct}, a oeddech chi wedi'i dawelu. copy_account_note_text: 'Wnaeth y defnyddiwr symud o %{acct}, dyma oedd eich hen nodiadau amdanynt:' 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: - few: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - many: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - one: Yr ydych wedi ennill dilynwr newydd tra eich bod i ffwrdd! Hwrê! - other: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - two: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - zero: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - title: Yn eich absenoldeb... favourite: body: 'Cafodd eich statws ei hoffi gan %{name}:' subject: Hoffodd %{name} eich statws diff --git a/config/locales/da.yml b/config/locales/da.yml index 9538186c4..9b6250ad3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -235,17 +235,21 @@ da: approve_user: Godkend bruger assigned_to_self_report: Tildel rapport change_email_user: Skift e-mail for bruger + change_role_user: Skift brugerrolle confirm_user: Bekræft bruger create_account_warning: Opret advarsel create_announcement: Opret bekendtgørelse + create_canonical_email_block: Opret e-mailblokering create_custom_emoji: Opret tilpasset emoji create_domain_allow: Opret domænetilladelse create_domain_block: Opret domæneblokering create_email_domain_block: Opret e-maildomæneblokering create_ip_block: Opret IP-regel create_unavailable_domain: Opret Utilgængeligt Domæne + create_user_role: Opret rolle demote_user: Degradér bruger destroy_announcement: Slet bekendtgørelse + destroy_canonical_email_block: Slet e-mailblokering destroy_custom_emoji: Slet tilpasset emoji destroy_domain_allow: Slet domænetilladelse destroy_domain_block: Slet domæneblokering @@ -254,6 +258,7 @@ da: destroy_ip_block: Slet IP-regel destroy_status: Slet indlæg destroy_unavailable_domain: Slet Utilgængeligt Domæne + destroy_user_role: Ødelæg rolle disable_2fa_user: Deaktivér 2FA disable_custom_emoji: Deaktivér tilpasset emoji disable_sign_in_token_auth_user: Deaktivér e-mailtoken godkendelse for bruger @@ -280,24 +285,30 @@ da: update_announcement: Opdatér bekendtgørelse update_custom_emoji: Opdatér tilpasset emoji update_domain_block: Opdatér domæneblokering + update_ip_block: Opdatér IP-regel update_status: Opdatér indlæg + update_user_role: Opdatér rolle actions: approve_appeal_html: "%{name} godkendte moderationsafgørelsesappellen fra %{target}" approve_user_html: "%{name} godkendte tilmeldingen fra %{target}" assigned_to_self_report_html: "%{name} tildelte sig selv anmeldelsen %{target}" change_email_user_html: "%{name} ændrede e-mailadressen for bruger %{target}" + change_role_user_html: "%{name} ændrede rollen for %{target}" confirm_user_html: "%{name} bekræftede e-mailadressen for bruger %{target}" create_account_warning_html: "%{name} sendte en advarsel til %{target}" create_announcement_html: "%{name} oprettede den nye bekendtgørelse %{target}" + create_canonical_email_block_html: "%{name} blokerede e-mailen med hash'et %{target}" create_custom_emoji_html: "%{name} uploadede den nye emoji %{target}" create_domain_allow_html: "%{name} tillod federering med domænet %{target}" create_domain_block_html: "%{name} blokerede domænet %{target}" create_email_domain_block_html: "%{name} blokerede e-maildomænet %{target}" create_ip_block_html: "%{name} oprettede en regel for IP %{target}" create_unavailable_domain_html: "%{name} stoppede levering til domænet %{target}" + create_user_role_html: "%{name} oprettede %{target}-rolle" demote_user_html: "%{name} degraderede brugeren %{target}" destroy_announcement_html: "%{name} slettede bekendtgørelsen %{target}" - destroy_custom_emoji_html: "%{name} fjernede emojien %{target}" + destroy_canonical_email_block_html: "%{name} afblokerede e-mailen med hash'et %{target}" + destroy_custom_emoji_html: "%{name} slettede emojien %{target}" destroy_domain_allow_html: "%{name} fjernede federeringstilladelsen med domænet %{target}" destroy_domain_block_html: "%{name} afblokerede domænet %{target}" destroy_email_domain_block_html: "%{name} afblokerede e-maildomænet %{target}" @@ -305,6 +316,7 @@ da: destroy_ip_block_html: "%{name} slettede en regel for IP %{target}" destroy_status_html: "%{name} fjernede indlægget fra %{target}" destroy_unavailable_domain_html: "%{name} genoptog levering til domænet %{target}" + destroy_user_role_html: "%{name} slettede %{target}-rolle" disable_2fa_user_html: "%{name} deaktiverede tofaktorkravet for brugeren %{target}" disable_custom_emoji_html: "%{name} deaktiverede emojien %{target}" disable_sign_in_token_auth_user_html: "%{name} deaktiverede e-mailtoken godkendelsen for %{target}" @@ -331,8 +343,9 @@ da: update_announcement_html: "%{name} opdaterede bekendtgørelsen %{target}" update_custom_emoji_html: "%{name} opdaterede emoji %{target}" update_domain_block_html: "%{name} opdaterede domæneblokeringen for %{target}" + update_ip_block_html: "%{name} ændrede reglen for IP'en %{target}" update_status_html: "%{name} opdaterede indlægget fra %{target}" - deleted_status: "(slettet indlæg)" + update_user_role_html: "%{name} ændrede %{target}-rolle" empty: Ingen logger fundet. filter_by_action: Filtrér efter handling filter_by_user: Filtrér efter bruger @@ -794,8 +807,8 @@ da: title: Tillad ikke-godkendt tilgang til offentlig tidslinje title: Webstedsindstillinger trendable_by_default: - desc_html: Påvirker hashtags, som ikke tidligere er blevet nægtet - title: Tillad hashtags at forme tendens uden forudgående revision + desc_html: Bestemt tendensindhold kan stadig udtrykkeligt forbydes + title: Tillad tendenser uden forudgående gennemsyn trends: desc_html: Vis offentligt tidligere reviderede hashtags, som pt. trender title: Populært @@ -1181,7 +1194,7 @@ da: add_keyword: Tilføj nøgleord keywords: Nøgleord statuses: Individuelle indlæg - statuses_hint_html: Dette filter gælder for udvalgte, individuelle indlæg, uanset om de matcher nøgleordene nedenfor. Disse indlæg kan gennemgås og fjernes fra filteret ved at klikke hér. + statuses_hint_html: Dette filter gælder for udvalgte, individuelle indlæg, uanset om de matcher nøgleordene nedenfor. Gennemgå eller fjern indlæg fra filteret. title: Redigere filter errors: deprecated_api_multiple_keywords: Disse parametre kan ikke ændres fra denne applikation, da de gælder for flere end ét filternøgleord. Brug en nyere applikation eller webgrænsefladen. @@ -1210,7 +1223,7 @@ da: batch: remove: Fjern fra filter index: - hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webgrænsefladen. + hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webfladen. title: Filtrerede indlæg footer: developers: Udviklere @@ -1219,12 +1232,22 @@ da: trending_now: Trender lige nu generic: all: Alle + all_items_on_page_selected_html: + one: "%{count} emne på denne side er valgt." + other: Alle %{count} emner på denne side er valgt. + all_matching_items_selected_html: + one: "%{count} emne, der matchede søgningen, er valgt." + other: Alle %{count} emner, som matchede søgningen, er valgt. changes_saved_msg: Ændringerne er gemt! copy: Kopier delete: Slet + deselect: Afmarkér alle none: Intet order_by: Sortér efter save_changes: Gem ændringer + select_all_matching_items: + one: Vælg %{count} emne, der matchede søgningen. + other: Vælg alle %{count} emner, som matchede søgningen. today: i dag validation_errors: one: Noget er ikke er helt i vinkel! Tjek fejlen nedenfor @@ -1333,17 +1356,6 @@ da: subject: "%{name} indsendte en anmeldelse" sign_up: subject: "%{name} tilmeldte sig" - digest: - action: Se alle notifikationer - body: Her er en kort oversigt over de beskeder, som er misset siden dit seneste besøg %{since} - mention: "%{name} nævnte dig i:" - new_followers_summary: - one: Under dit fravær har du har også fået en ny følger! Sådan! - other: Under dit fravær har du har også fået %{count} nye følgere! Sådan! - subject: - one: "1 ny notifikation siden senest besøg 🐘" - other: "%{count} nye notifikationer siden senest besøg 🐘" - title: I dit fravær... favourite: body: "%{name} favoritmarkerede dit indlæg:" subject: "%{name} favoritmarkerede dit indlæg" diff --git a/config/locales/de.yml b/config/locales/de.yml index 0ce9c3254..d411886bf 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1,30 +1,30 @@ --- de: about: - about_hashtag_html: Das sind öffentliche Beiträge, die mit #%{hashtag} getaggt wurden. Wenn du irgendwo im Fediversum ein Konto besitzt, kannst du mit ihnen interagieren. - about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!). + about_hashtag_html: Das sind öffentliche Beiträge, die mit #%{hashtag} getaggt wurden. Wenn du irgendwo im Födiversum ein Konto besitzt, kannst du mit ihnen interagieren. + about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! about_this: Über diesen Server active_count_after: aktiv - active_footnote: Monatlich Aktive User (MAU) + active_footnote: Monatlich aktive User (MAU) administered_by: 'Betrieben von:' api: API apps: Mobile Apps apps_platforms: Benutze Mastodon auf iOS, Android und anderen Plattformen browse_directory: Durchsuche das Profilverzeichnis und filtere nach Interessen - browse_local_posts: Durchsuche einen Live-Stream von öffentlichen Beiträgen von diesem Server + browse_local_posts: Durchsuche einen Live-Stream öffentlicher Beiträge dieses Servers browse_public_posts: Stöbere durch öffentliche Beiträge auf Mastodon contact: Kontakt contact_missing: Nicht angegeben contact_unavailable: Nicht verfügbar - continue_to_web: Weiter zur Web App + continue_to_web: Weiter zur Web-App discover_users: Benutzer entdecken documentation: Dokumentation - federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen. + federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein, Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen. get_apps: Versuche eine mobile App hosted_on: Mastodon, gehostet auf %{domain} instance_actor_flash: | - Dieses Konto ist ein virtueller Akteur, der den Server selbst und nicht einen einzelnen Benutzer repräsentiert. - Dieser wird für Föderationszwecke verwendet und sollte nicht blockiert werden, es sei denn du möchtest die gesamte Instanz blockieren. + Dieses Konto ist ein virtueller Akteur, welcher den Server selbst – und nicht einen einzelnen Benutzer – repräsentiert. + Dieser wird für Föderationszwecke verwendet und sollte nicht blockiert werden, es sei denn, du möchtest die gesamte Instanz blockieren. learn_more: Mehr erfahren logged_in_as_html: Du bist derzeit als %{username} eingeloggt. logout_before_registering: Du bist bereits angemeldet. @@ -44,7 +44,7 @@ de: unavailable_content_description: domain: Server reason: 'Grund:' - rejecting_media: Mediendateien dieses Servers werden nicht verarbeitet und keine Thumbnails werden angezeigt, was manuelles anklicken auf den anderen Server erfordert. + rejecting_media: Mediendateien dieses Servers werden nicht verarbeitet und keine Thumbnails werden angezeigt, was manuelles Anklicken auf den anderen Server erfordert. rejecting_media_title: Gefilterte Medien silenced: Beiträge von diesem Server werden nirgends angezeigt, außer in deiner Startseite, wenn du der Person folgst, die den Beitrag verfasst hat. silenced_title: Stummgeschaltete Server @@ -96,9 +96,9 @@ de: created_msg: Moderationsnotiz erfolgreich erstellt! destroyed_msg: Moderationsnotiz erfolgreich gelöscht! accounts: - add_email_domain_block: E-Mail-Domain blacklisten + add_email_domain_block: E-Mail-Domain auf Blacklist setzen approve: Akzeptieren - approved_msg: "%{username}'s Anmeldeantrag erfolgreich genehmigt" + approved_msg: Anmeldeantrag von %{username} erfolgreich genehmigt are_you_sure: Bist du sicher? avatar: Profilbild by_domain: Domain @@ -121,7 +121,7 @@ de: delete: Daten löschen deleted: Gelöscht demote: Degradieren - destroyed_msg: "%{username}'s Daten wurden zum Löschen in die Warteschlange eingereiht" + destroyed_msg: Daten von %{username} wurden zum Löschen in die Warteschlange eingereiht disable: Ausschalten disable_sign_in_token_auth: Deaktiviere die Zwei-Faktor-Authentifizierung per E-Mail disable_two_factor_authentication: 2FA abschalten @@ -134,12 +134,12 @@ de: enable: Freischalten enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentifizierung per E-Mail enabled: Freigegeben - enabled_msg: "%{username}'s Konto erfolgreich freigegeben" + enabled_msg: Konto von %{username} erfolgreich freigegeben followers: Follower follows: Folgt header: Titelbild inbox_url: Posteingangs-URL - invite_request_text: Begründung für das beitreten + invite_request_text: Begründung für das Beitreten invited_by: Eingeladen von ip: IP-Adresse joined: Beigetreten @@ -152,7 +152,7 @@ de: media_attachments: Dateien memorialize: In Gedenkmal verwandeln memorialized: Memorialisiert - memorialized_msg: "%{username} wurde erfolgreich in ein memorialisiertes Konto umgewandelt" + memorialized_msg: "%{username} wurde erfolgreich in ein In-Memoriam-Konto umgewandelt" moderation: active: Aktiv all: Alle @@ -180,11 +180,11 @@ de: redownload: Profil neu laden redownloaded_msg: Profil von %{username} erfolgreich von Ursprung aktualisiert reject: Ablehnen - rejected_msg: "%{username}'s Anmeldeantrag erfolgreich abgelehnt" + rejected_msg: Anmeldeantrag von %{username} erfolgreich abgelehnt remove_avatar: Profilbild entfernen remove_header: Titelbild entfernen removed_avatar_msg: Profilbild von %{username} erfolgreich entfernt - removed_header_msg: "%{username}'s Titelbild wurde erfolgreich entfernt" + removed_header_msg: Titelbild von %{username} wurde erfolgreich entfernt resend_confirmation: already_confirmed: Diese_r Benutzer_in wurde bereits bestätigt send: Bestätigungs-E-Mail erneut senden @@ -195,7 +195,7 @@ de: role: Rolle search: Suche search_same_email_domain: Andere Benutzer mit der gleichen E-Mail-Domain - search_same_ip: Andere Benutzer mit derselben IP + search_same_ip: Andere Benutzer mit derselben IP-Adresse security_measures: only_password: Nur Passwort password_and_2fa: Passwort und 2FA @@ -212,7 +212,7 @@ de: subscribe: Abonnieren suspend: Suspendieren suspended: Verbannt - suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto aufheben, um es brauchbar zu machen, aber es wird keine Daten wiederherstellen, die es davor schon hatte. + suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto aufheben, um es wieder brauchbar zu machen, aber es wird keine Daten wiederherstellen, die es davor hatte. suspension_reversible_hint_html: Das Konto wurde gesperrt und die Daten werden am %{date} vollständig gelöscht. Bis dahin kann das Konto ohne irgendwelche negativen Auswirkungen wiederhergestellt werden. Wenn du alle Daten des Kontos sofort entfernen möchtest, kannst du dies nachfolgend tun. title: Konten unblock_email: E-Mail Adresse entsperren @@ -221,7 +221,7 @@ de: undo_sensitized: Nicht mehr als NSFW markieren undo_silenced: Stummschaltung aufheben undo_suspension: Verbannung aufheben - unsilenced_msg: "%{username}'s Konto erfolgreich freigegeben" + unsilenced_msg: Konto von %{username} erfolgreich freigegeben unsubscribe: Abbestellen unsuspended_msg: Konto von %{username} erfolgreich freigegeben username: Profilname @@ -235,18 +235,22 @@ de: approve_user: Benutzer genehmigen assigned_to_self_report: Bericht zuweisen change_email_user: E-Mail des Benutzers ändern + change_role_user: Rolle des Benutzers ändern confirm_user: Benutzer bestätigen create_account_warning: Warnung erstellen create_announcement: Ankündigung erstellen - create_custom_emoji: Eigene Emoji erstellen + create_canonical_email_block: E-Mail-Block erstellen + create_custom_emoji: Eigene Emojis erstellen create_domain_allow: Domain erlauben create_domain_block: Domain blockieren create_email_domain_block: E-Mail-Domain-Block erstellen create_ip_block: IP-Regel erstellen create_unavailable_domain: Nicht verfügbare Domain erstellen + create_user_role: Rolle erstellen demote_user: Benutzer degradieren destroy_announcement: Ankündigung löschen - destroy_custom_emoji: Eigene Emoji löschen + destroy_canonical_email_block: E-Mail-Blockade löschen + destroy_custom_emoji: Eigene Emojis löschen destroy_domain_allow: Erlaube das Löschen von Domains destroy_domain_block: Domain-Blockade löschen destroy_email_domain_block: E-Mail-Domain-Blockade löschen @@ -254,6 +258,7 @@ de: destroy_ip_block: IP-Regel löschen destroy_status: Beitrag löschen destroy_unavailable_domain: Nicht verfügbare Domain löschen + destroy_user_role: Rolle löschen disable_2fa_user: 2FA deaktivieren disable_custom_emoji: Benutzerdefiniertes Emoji deaktivieren disable_sign_in_token_auth_user: Zwei-Faktor-Authentifizierung per E-Mail für den Nutzer deaktiviert @@ -279,25 +284,31 @@ de: unsuspend_account: Konto nicht mehr sperren update_announcement: Ankündigung aktualisieren update_custom_emoji: Benutzerdefiniertes Emoji aktualisieren - update_domain_block: Domain Block aktualisieren + update_domain_block: Domain-Blockade aktualisieren + update_ip_block: IP-Regel aktualisieren update_status: Beitrag aktualisieren + update_user_role: Rolle aktualisieren actions: approve_appeal_html: "%{name} genehmigte die Moderationsbeschlüsse von %{target}" approve_user_html: "%{name} genehmigte die Anmeldung von %{target}" assigned_to_self_report_html: "%{name} hat sich die Meldung %{target} selbst zugewiesen" change_email_user_html: "%{name} hat die E-Mail-Adresse des Nutzers %{target} geändert" + change_role_user_html: "%{name} hat die Rolle von %{target} geändert" confirm_user_html: "%{name} hat die E-Mail-Adresse von %{target} bestätigt" create_account_warning_html: "%{name} hat eine Warnung an %{target} gesendet" create_announcement_html: "%{name} hat die neue Ankündigung %{target} erstellt" + create_canonical_email_block_html: "%{name} hat die E-Mail mit dem Hash %{target} blockiert" create_custom_emoji_html: "%{name} hat neues Emoji %{target} hochgeladen" create_domain_allow_html: "%{name} hat die Domain %{target} gewhitelistet" create_domain_block_html: "%{name} hat die Domain %{target} blockiert" create_email_domain_block_html: "%{name} hat die E-Mail-Domain %{target} geblacklistet" create_ip_block_html: "%{name} hat eine Regel für IP %{target} erstellt" create_unavailable_domain_html: "%{name} hat die Lieferung an die Domain %{target} eingestellt" + create_user_role_html: "%{name} hat die Rolle %{target} erstellt" demote_user_html: "%{name} stufte Benutzer_in %{target} herunter" destroy_announcement_html: "%{name} hat die neue Ankündigung %{target} gelöscht" - destroy_custom_emoji_html: "%{name} zerstörte Emoji %{target}" + destroy_canonical_email_block_html: "%{name} hat die E-Mail mit dem Hash %{target} freigegeben" + destroy_custom_emoji_html: "%{name} hat das %{target} Emoji gelöscht" destroy_domain_allow_html: "%{name} hat die Domain %{target} von der Whitelist entfernt" destroy_domain_block_html: "%{name} hat die Domain %{target} entblockt" destroy_email_domain_block_html: "%{name} hat die E-Mail-Domain %{target} gewhitelistet" @@ -305,12 +316,13 @@ de: destroy_ip_block_html: "%{name} hat eine Regel für IP %{target} gelöscht" destroy_status_html: "%{name} hat einen Beitrag von %{target} entfernt" destroy_unavailable_domain_html: "%{name} setzte die Lieferung an die Domain %{target} fort" + destroy_user_role_html: "%{name} hat die Rolle %{target} gelöscht" disable_2fa_user_html: "%{name} hat Zwei-Faktor-Anforderung für Benutzer_in %{target} deaktiviert" disable_custom_emoji_html: "%{name} hat das %{target} Emoji deaktiviert" disable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token Authentifizierung für %{target} deaktiviert" disable_user_html: "%{name} hat Zugang von Benutzer_in %{target} deaktiviert" enable_custom_emoji_html: "%{name} hat das %{target} Emoji aktiviert" - enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token Authentifizierung für %{target} aktiviert" + enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token-Authentifizierung für %{target} aktiviert" enable_user_html: "%{name} hat Zugang von Benutzer_in %{target} aktiviert" memorialize_account_html: "%{name} hat das Konto von %{target} in eine Gedenkseite umgewandelt" promote_user_html: "%{name} hat %{target} befördert" @@ -320,19 +332,20 @@ de: reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet" reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt" resolve_report_html: "%{name} hat die Meldung %{target} bearbeitet" - sensitive_account_html: "%{name} markierte %{target}'s Medien als NSFW" + sensitive_account_html: "%{name} markierte die Medien von %{target} als NSFW" silence_account_html: "%{name} hat das Konto von %{target} stummgeschaltet" suspend_account_html: "%{name} hat das Konto von %{target} verbannt" unassigned_report_html: "%{name} hat die Zuweisung der Meldung %{target} entfernt" - unblock_email_account_html: "%{name} entsperrte %{target}'s E-Mail-Adresse" - unsensitive_account_html: "%{name} markierte %{target}'s Medien nicht als NSFW" + unblock_email_account_html: "%{name} entsperrte die E-Mail-Adresse von %{target}" + unsensitive_account_html: "%{name} markierte Medien von %{target} als nicht NSFW" unsilence_account_html: "%{name} hat die Stummschaltung von %{target} aufgehoben" unsuspend_account_html: "%{name} hat die Verbannung von %{target} aufgehoben" update_announcement_html: "%{name} aktualisierte Ankündigung %{target}" update_custom_emoji_html: "%{name} hat das %{target} Emoji geändert" update_domain_block_html: "%{name} hat den Domain-Block für %{target} aktualisiert" + update_ip_block_html: "%{name} hat die Regel für IP %{target} geändert" update_status_html: "%{name} hat einen Beitrag von %{target} aktualisiert" - deleted_status: "(gelöschter Beitrag)" + update_user_role_html: "%{name} hat die Rolle %{target} geändert" empty: Keine Protokolle gefunden. filter_by_action: Nach Aktion filtern filter_by_user: Nach Benutzer filtern @@ -467,11 +480,11 @@ de: resolve: Domain auflösen title: Neue E-Mail-Domain-Blockade no_email_domain_block_selected: Es wurden keine E-Mail-Domain-Blockierungen geändert, da keine ausgewählt wurden - resolved_dns_records_hint_html: Der Domain-Name wird an die folgenden MX-Domains aufgelöst, die letztendlich für die Annahme von E-Mails verantwortlich sind. Das Blockieren einer MX-Domain blockiert Anmeldungen von jeder E-Mail-Adresse, die dieselbe MX-Domain verwendet, auch wenn der sichtbare Domainname anders ist. Achte darauf große E-Mail-Anbieter nicht zu blockieren. + resolved_dns_records_hint_html: Der Domain-Name wird an die folgenden MX-Domains aufgelöst, die letztendlich für die Annahme von E-Mails verantwortlich sind. Das Blockieren einer MX-Domain blockiert Anmeldungen von jeder E-Mail-Adresse, welche dieselbe MX-Domain verwendet, auch wenn der sichtbare Domainname anders ist. Achte darauf, große E-Mail-Anbieter nicht zu blockieren. resolved_through_html: Durch %{domain} aufgelöst title: E-Mail-Domain-Blockade follow_recommendations: - description_html: "Folgeempfehlungen helfen neuen Nutzern dabei, schnell interessante Inhalte zu finden. Wenn ein Nutzer noch nicht genug mit anderen interagiert hat, um personalisierte Folgeempfehlungen zu erstellen, werden stattdessen diese Benutzerkonten verwendet. Sie werden täglich basiert auf einer Mischung aus am meisten interagierenden Benutzerkonten und solchen mit den meisten Folgenden für eine bestimmte Sprache neuberechnet." + description_html: "Folgeempfehlungen helfen neuen Nutzern dabei, schnell interessante Inhalte zu finden. Wenn ein Nutzer noch nicht genug mit anderen interagiert hat, um personalisierte Folgeempfehlungen zu erstellen, werden stattdessen diese Benutzerkonten verwendet. Sie werden täglich basierend auf einer Mischung aus am meisten interagierenden Benutzerkonten und jenen mit den meisten Folgenden für eine bestimmte Sprache neuberechnet." language: Für Sprache status: Status suppress: Folgeempfehlungen unterdrücken @@ -577,7 +590,7 @@ de: disable: Ausschalten disabled: Ausgeschaltet enable: Einschalten - enable_hint: Sobald aktiviert wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und wird alle öffentlichen Beiträge dieses Servers an es senden. + enable_hint: Sobald aktiviert, wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und alle öffentlichen Beiträge dieses Servers an dieses senden. enabled: Eingeschaltet inbox_url: Relay-URL pending: Warte auf Zustimmung des Relays @@ -599,12 +612,12 @@ de: action_taken_by: Maßnahme ergriffen durch actions: delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen. - mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future infractions by the same account. - other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation an das gemeldete Konto. - resolve_description_html: Es wird keine Maßnahme gegen den gemeldeten Account ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. - silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die es bereits verfolgen oder manuell nachschlagen und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden. + mark_as_sensitive_description_html: Die Medien in den gemeldeten Beiträgen werden als NSFW markiert und ein Strike wird notiert, um dir dabei zu helfen, härter auf zukünftige Zuwiderhandlungen desselben Kontos zu reagieren. + other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation mit dem gemeldeten Konto. + resolve_description_html: Es wird keine Maßnahme gegen das gemeldete Konto ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. + silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die ihm bereits folgen oder es manuell nachschlagen, und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden. suspend_description_html: Das Profil und alle seine Inhalte werden unzugänglich werden, bis es schließlich gelöscht wird. Interaktion mit dem Konto wird unmöglich sein. Reversibel innerhalb von 30 Tagen. - actions_description_html: Entscheide, welche Maßnahmen zur Lösung dieses Berichts zu ergreifen sind. Wenn du eine Strafmaßnahme gegen das gemeldete Konto ergreifst, wird eine E-Mail-Benachrichtigung an diese gesendet außer wenn die Spam Kategorie ausgewählt ist. + actions_description_html: Entscheide, welche Maßnahmen zur Lösung dieses Berichts zu ergreifen sind. Wenn du eine Strafmaßnahme gegen das gemeldete Konto ergreifst, wird eine E-Mail-Benachrichtigung an diese gesendet, außer wenn die Spam-Kategorie ausgewählt ist. add_to_report: Mehr zur Meldung hinzufügen are_you_sure: Bist du dir sicher? assign_to_self: Mir zuweisen @@ -614,7 +627,7 @@ de: category_description_html: Der Grund, warum dieses Konto und/oder der Inhalt gemeldet wurden, wird in der Kommunikation mit dem gemeldeten Konto zitiert comment: none: Kein - comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} folgendes:' + comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} Folgendes:' created_at: Gemeldet delete_and_resolve: Beiträge löschen forwarded: Weitergeleitet @@ -661,10 +674,10 @@ de: moderation: Moderation special: Spezial delete: Löschen - description_html: Mit Benutzerrollenkönnen Sie die Funktionen und Bereiche von Mastodon anpassen, auf die Ihre Benutzer zugreifen können. + description_html: Mit Benutzerrollenkannst du die Funktionen und Bereiche von Mastodon anpassen, auf die deine Benutzer zugreifen können. edit: "'%{name}' Rolle bearbeiten" everyone: Standardberechtigungen - everyone_full_description_html: Das ist die -Basis-Rolle die jeden Benutzer betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon. + everyone_full_description_html: Das ist die -Basis-Rolle, die jeden Benutzer betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon. permissions_count: one: "%{count} Berechtigung" other: "%{count} Berechtigungen" @@ -674,46 +687,46 @@ de: delete_user_data: Benutzerdaten löschen delete_user_data_description: Erlaubt Benutzern, die Daten anderer Benutzer ohne Verzögerung zu löschen invite_users: Benutzer einladen - invite_users_description: Erlaubt Benutzern neue Leute zum Server einzuladen + invite_users_description: Erlaubt Benutzern, neue Leute zum Server einzuladen manage_announcements: Ankündigungen verwalten - manage_announcements_description: Erlaubt Benutzern Ankündigungen auf dem Server zu verwalten + manage_announcements_description: Erlaubt Benutzern, Ankündigungen auf dem Server zu verwalten manage_appeals: Anträge verwalten - manage_appeals_description: Erlaubt es Benutzer Anträge gegen Moderationsaktionen zu überprüfen + manage_appeals_description: Erlaubt es Benutzern, Anträge gegen Moderationsaktionen zu überprüfen manage_blocks: Geblocktes verwalten - manage_blocks_description: Erlaubt Benutzern E-Mail-Anbieter und IP-Adressen zu blockieren + manage_blocks_description: Erlaubt Benutzern, E-Mail-Anbieter und IP-Adressen zu blockieren manage_custom_emojis: Benutzerdefinierte Emojis verwalten - manage_custom_emojis_description: Erlaubt Benutzern benutzerdefinierte Emojis auf dem Server zu verwalten + manage_custom_emojis_description: Erlaubt es Benutzern, eigene Emojis auf dem Server zu verwalten manage_federation: Föderation verwalten - manage_federation_description: Erlaubt Benutzern, Föderation mit anderen Domänen zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren + manage_federation_description: Erlaubt es Benutzern, Föderation mit anderen Domains zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren manage_invites: Einladungen verwalten - manage_invites_description: Erlaubt Benutzern Einladungslinks zu durchsuchen und zu deaktivieren + manage_invites_description: Erlaubt es Benutzern, Einladungslinks zu durchsuchen und zu deaktivieren manage_reports: Meldungen verwalten - manage_reports_description: Erlaubt Benutzern Meldungen zu überprüfen und Moderationsaktionen gegen sie durchzuführen + manage_reports_description: Erlaubt es Benutzern, Meldungen zu überprüfen und Moderationsaktionen gegen sie durchzuführen manage_roles: Rollen verwalten - manage_roles_description: Erlaubt Benutzern Rollen unter ihren Rollen zu verwalten und zuzuweisen + manage_roles_description: Erlaubt es Benutzern, Rollen unter ihren Rollen zu verwalten und zuzuweisen manage_rules: Regeln verwalten - manage_rules_description: Erlaubt Benutzern Serverregeln zu ändern + manage_rules_description: Erlaubt es Benutzern, Serverregeln zu ändern manage_settings: Einstellungen verwalten - manage_settings_description: Erlaubt Benutzern Site-Einstellungen zu ändern + manage_settings_description: Erlaubt es Benutzern, Seiten-Einstellungen zu ändern manage_taxonomies: Taxonomien verwalten manage_taxonomies_description: Ermöglicht Benutzern die Überprüfung angesagter Inhalte und das Aktualisieren der Hashtag-Einstellungen manage_user_access: Benutzerzugriff verwalten - manage_user_access_description: Erlaubt Benutzern die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen + manage_user_access_description: Erlaubt es Benutzern, die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen manage_users: Benutzer verwalten - manage_users_description: Erlaubt Benutzern die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen + manage_users_description: Erlaubt es Benutzern, die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen manage_webhooks: Webhooks verwalten - manage_webhooks_description: Erlaubt Benutzern Webhooks für administrative Ereignisse einzurichten + manage_webhooks_description: Erlaubt es Benutzern, Webhooks für administrative Ereignisse einzurichten view_audit_log: Audit-Log anzeigen - view_audit_log_description: Erlaubt Benutzern den Verlauf von administrativen Aktionen auf dem Server zu sehen + view_audit_log_description: Erlaubt es Benutzern, den Verlauf von administrativen Aktionen auf dem Server zu sehen view_dashboard: Dashboard anzeigen - view_dashboard_description: Erlaubt Benutzern den Zugriff auf das Dashboard und verschiedene Metriken + view_dashboard_description: Gewährt Benutzern den Zugriff auf das Dashboard und verschiedene Metriken view_devops: DevOps - view_devops_description: Erlaubt Benutzern auf Sidekiq und pgHero Dashboards zuzugreifen + view_devops_description: Erlaubt es Benutzern, auf die Sidekiq- und pgHero-Dashboards zuzugreifen title: Rollen rules: add_new: Regel hinzufügen delete: Löschen - description_html: Während die meisten behaupten, die Nutzungsbedingungen gelesen und akzeptiert zu haben, lesen die Menschen sie in der Regel erst nach einem Problem. Vereinfache es, die Regeln deines Servers auf einen Blick zu sehen, indem du sie in einer einfachen Auflistung zur Verfügung stellst. Versuche die einzelnen Regeln kurz und einfach zu halten, aber versuche nicht, sie in viele verschiedene Elemente aufzuteilen. + description_html: Während die meisten behaupten, die Nutzungsbedingungen gelesen und akzeptiert zu haben, lesen die Menschen sie in der Regel erst nach einem Problem. Vereinfache es, die Regeln deines Servers auf einen Blick zu sehen, indem du sie in einer einfachen Auflistung zur Verfügung stellst. Versuche, die einzelnen Regeln kurz und einfach zu halten, aber versuche nicht, sie in viele verschiedene Elemente aufzuteilen. edit: Regel bearbeiten empty: Es wurden bis jetzt keine Server-Regeln definiert. title: Server-Regeln @@ -722,13 +735,13 @@ de: desc_html: Anzahl der lokal geposteten Beiträge, aktiven Nutzern und neuen Registrierungen in wöchentlichen Zusammenfassungen title: Veröffentliche gesamte Statistiken über Benutzeraktivitäten bootstrap_timeline_accounts: - desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Accounts werden immer in den Folgemempfehlungen angezeigt - title: Konten, die Neu-Angemeldete empfohlen bekommen sollen + desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Konten werden immer in den Folgemempfehlungen angezeigt + title: Konten, welche neuen Benutzern empfohlen werden sollen contact_information: email: Öffentliche E-Mail-Adresse username: Profilname für die Kontaktaufnahme custom_css: - desc_html: Verändere das Aussehen mit CSS, dass auf jeder Seite geladen wird + desc_html: Verändere das Aussehen mit CSS-Stilen, die auf jeder Seite geladen werden title: Benutzerdefiniertes CSS default_noindex: desc_html: Beeinflusst alle Benutzer, die diese Einstellung nicht selbst geändert haben @@ -744,7 +757,7 @@ de: desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Server-Thumbnail dafür verwendet title: Bild für Einstiegsseite mascot: - desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde wird es auf das Standard-Maskottchen zurückfallen + desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde, wird stattdessen das Standard-Maskottchen genutzt werden. title: Maskottchen-Bild peers_api_enabled: desc_html: Domain-Namen, die der Server im Fediversum gefunden hat @@ -753,7 +766,7 @@ de: desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als NSFW markiert sind title: NSFW-Medien in OpenGraph-Vorschau anzeigen profile_directory: - desc_html: Erlaube Benutzer auffindbar zu sein + desc_html: Erlaube es Benutzern, auffindbar zu sein title: Aktiviere Profilverzeichnis registrations: closed_message: @@ -763,7 +776,7 @@ de: desc_html: Allen erlauben, ihr Konto eigenmächtig zu löschen title: Kontolöschung erlauben require_invite_text: - desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den "Warum möchtest du beitreten?" Text eher obligatorisch als optional + desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den „Warum möchtest du beitreten?“-Text obligatorisch statt optional title: Neue Benutzer müssen einen Einladungstext ausfüllen registrations_mode: modes: @@ -772,7 +785,7 @@ de: open: Jeder kann sich registrieren title: Registrierungsmodus show_known_fediverse_at_about_page: - desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Fediversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt. + desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Födiversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt. title: Zeige eine öffentliche Zeitleiste auf der Einstiegsseite site_description: desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diesen Mastodon-Server ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a> und <em>. @@ -781,7 +794,7 @@ de: desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deinen Server auszeichnet. Du kannst HTML-Tags benutzen title: Erweiterte Beschreibung des Servers site_short_description: - desc_html: Wird angezeigt in der Seitenleiste und in Meta-Tags. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet. + desc_html: Wird in der Seitenleiste und in Meta-Tags angezeigt. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet. title: Kurze Beschreibung des Servers site_terms: desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags nutzen @@ -795,8 +808,8 @@ de: title: Zeitleisten-Vorschau title: Server-Einstellungen trendable_by_default: - desc_html: Betroffene Hashtags, die bisher nicht gesperrt wurden - title: Hashtags ohne vorherige Überprüfung erlauben zu trenden + desc_html: Bestimmte angesagte Inhalte können immer noch explizit deaktiviert werden + title: Trends ohne vorherige Überprüfung erlauben trends: desc_html: Zuvor überprüfte Hashtags öffentlich anzeigen, die derzeit angesagt sind title: Trendende Hashtags @@ -821,24 +834,24 @@ de: disable: "%{name} hat das Konto von %{target} eingefroren" mark_statuses_as_sensitive: "%{name} markierte %{target}'s Beiträge als NSFW" none: "%{name} hat eine Warnung an %{target} gesendet" - sensitive: "%{name} markierte %{target}'s Konto als NSFW" + sensitive: "%{name} markierte das Konto von %{target} als NSFW" silence: "%{name} hat das Konto von %{target} eingeschränkt" suspend: "%{name} hat das Konto von %{target} verbannt" appeal_approved: Einspruch angenommen appeal_pending: Einspruch ausstehend system_checks: database_schema_check: - message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führen Sie sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält + message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führe sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält elasticsearch_running_check: - message_html: Verbindung mit Elasticsearch konnte nicht hergestellt werden. Bitte prüfe ob Elasticsearch läuft oder deaktiviere die Volltextsuche + message_html: Verbindung mit Elasticsearch konnte nicht hergestellt werden. Bitte prüfe, ob Elasticsearch läuft, oder deaktiviere die Volltextsuche elasticsearch_version_check: message_html: 'Inkompatible Elasticsearch-Version: %{value}' version_comparison: Elasticsearch %{running_version} läuft, aber %{required_version} wird benötigt rules_check: action: Serverregeln verwalten - message_html: Sie haben keine Serverregeln definiert. + message_html: Du hast keine Serverregeln definiert. sidekiq_process_check: - message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfen Sie Ihre Sidekiq-Konfiguration + message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfe deine Sidekiq-Konfiguration tags: review: Prüfstatus updated_msg: Hashtageinstellungen wurden erfolgreich aktualisiert @@ -850,26 +863,26 @@ de: links: allow: Erlaube Link allow_provider: Erlaube Herausgeber - description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen, herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen. + description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen. disallow: Verbiete Link disallow_provider: Verbiete Herausgeber shared_by_over_week: one: In der letzten Woche von einer Person geteilt other: In der letzten Woche von %{count} Personen geteilt title: Angesagte Links - usage_comparison: Heute %{today} mal geteilt, gestern %{yesterday} mal + usage_comparison: Heute %{today} Mal geteilt, gestern %{yesterday} Mal only_allowed: Nur Erlaubte pending_review: Überprüfung ausstehend preview_card_providers: allowed: Links von diesem Herausgeber können angesagt sein - description_html: Dies sind Domains, von denen Links oft auf deinem Server geteilt werden. Links werden sich nicht öffentlich trenden, es sei denn, die Domain des Links wird genehmigt. Deine Zustimmung (oder Ablehnung) erstreckt sich auf Subdomains. + description_html: Dies sind Domains, von denen Links oft auf deinem Server geteilt werden. Links werden nicht öffentlich trenden, es sei denn, die Domain des Links wird genehmigt. Deine Zustimmung (oder Ablehnung) erstreckt sich auf Subdomains. rejected: Links von diesem Herausgeber können nicht angesagt sein title: Herausgeber rejected: Abgelehnt statuses: allow: Beitrag erlauben allow_account: Autor erlauben - description_html: Dies sind Beiträge, von denen dein Server weiß, dass sie derzeit viel geteilt und favorisiert werden. Es kann deinen neuen und wiederkehrenden Benutzern helfen, weitere Personen zu finden. Es werden keine Beiträge öffentlich angezeigt, bis du den Autor genehmigst und der Autor es zulässt deren Konto anderen Benutzern zu zeigen. Du kannst auch einzelne Beiträge zulassen oder ablehnen. + description_html: Dies sind Beiträge, von denen dein Server weiß, dass sie derzeit viel geteilt und favorisiert werden. Es kann deinen neuen und wiederkehrenden Benutzern helfen, weitere Personen zu finden. Es werden keine Beiträge öffentlich angezeigt, bis du den Autor genehmigst und der Autor es zulässt, sein Konto anderen Benutzern zeigen zu lassen. Du kannst auch einzelne Beiträge zulassen oder ablehnen. disallow: Beitrag verbieten disallow_account: Autor verbieten not_discoverable: Der Autor hat sich nicht dafür entschieden, entdeckt zu werden @@ -895,7 +908,7 @@ de: trendable: Darf unter Trends erscheinen trending_rank: 'Trend #%{rank}' usable: Kann verwendet werden - usage_comparison: Heute %{today} mal genutzt, gestern %{yesterday} mal + usage_comparison: Heute %{today} Mal genutzt, gestern %{yesterday} Mal used_by_over_week: one: In der letzten Woche von einer Person genutzt other: In der letzten Woche von %{count} Personen genutzt @@ -937,9 +950,9 @@ de: sensitive: deren Konto als NSFW zu markieren silence: deren Konto zu beschränken suspend: deren Konto zu sperren - body: "%{target} hat was gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" + body: "%{target} hat etwas gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" next_steps: Du kannst dem Einspruch zustimmen und die Moderationsentscheidung rückgängig machen oder ignorieren. - subject: "%{username} hat Einspruch an einer Moderationsentscheidung von %{instance}" + subject: "%{username} hat Einspruch gegen eine Moderationsentscheidung von %{instance} eingelegt" new_pending_account: body: Die Details von diesem neuem Konto sind unten. Du kannst die Anfrage akzeptieren oder ablehnen. subject: Neues Konto zur Überprüfung auf %{instance} verfügbar (%{username}) @@ -965,13 +978,13 @@ de: aliases: add_new: Alias erstellen created_msg: Ein neuer Alias wurde erfolgreich erstellt. Du kannst nun den Wechsel vom alten Konto starten. - deleted_msg: Der Alias wurde erfolgreich entfernt. Aus diesem Konto zu diesem zu verschieben ist nicht mehr möglich. + deleted_msg: Der Alias wurde erfolgreich entfernt. Aus jenem Konto zu diesem zu verschieben, ist nicht mehr möglich. empty: Du hast keine Aliase. - hint_html: Wenn du von einem Konto zu einem anderem Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird bevor du deine Folgenden vom altem Account zu diesen migrierst. Die Aktion alleine ist harmlos und wi­der­ruf­lich. Die Kontenmigration wird vom altem Konto aus eingeleitet. + hint_html: Wenn du von einem Konto zu einem anderem Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird, bevor du deine Folgenden vom altem Account zu diesen migrierst. Die Aktion alleine ist harmlos und wi­der­ruf­lich. Die Kontenmigration wird vom altem Konto aus eingeleitet. remove: Alle Aliase aufheben appearance: advanced_web_interface: Fortgeschrittene Benutzeroberfläche - advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt dir die fortgeschrittene Benutzeroberfläche viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags. + advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt es dir die fortgeschrittene Benutzeroberfläche, viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags. animations_and_accessibility: Animationen und Barrierefreiheit confirmation_dialogs: Bestätigungsfenster discovery: Entdecken @@ -1038,7 +1051,7 @@ de: pending: Deine Bewerbung wird von unseren Mitarbeitern noch überprüft. Dies kann einige Zeit dauern. Du erhältst eine E-Mail, wenn deine Bewerbung genehmigt wurde. redirecting_to: Dein Konto ist inaktiv, da es derzeit zu %{acct} umgeleitet wird. view_strikes: Zeige frühere Streiks gegen dein Konto - too_fast: Formular zu schnell gesendet, versuchen Sie es erneut. + too_fast: Formular zu schnell gesendet, versuche es erneut. trouble_logging_in: Schwierigkeiten beim Anmelden? use_security_key: Sicherheitsschlüssel verwenden authorize_follow: @@ -1057,7 +1070,7 @@ de: confirm: Fortfahren hint_html: "Hinweis: Wir werden dich für die nächste Stunde nicht erneut nach deinem Passwort fragen." invalid_password: Ungültiges Passwort - prompt: Gib dein Passwort ein um fortzufahren + prompt: Gib dein Passwort ein, um fortzufahren crypto: errors: invalid_key: ist kein gültiger Ed25519- oder Curve25519-Schlüssel @@ -1087,7 +1100,7 @@ de: proceed: Konto löschen success_msg: Dein Konto wurde erfolgreich gelöscht warning: - before: 'Bevor du fortfährst, lese bitte diese Punkte sorgfältig durch:' + before: 'Bevor du fortfährst, lies bitte diese Punkte sorgfältig durch:' caches: Inhalte, die von anderen Servern zwischengespeichert wurden, können weiterhin bestehen data_removal: Deine Beiträge und andere Daten werden dauerhaft entfernt email_change_html: Du kannst deine E-Mail-Adresse ändern, ohne dein Konto zu löschen @@ -1136,15 +1149,15 @@ de: errors: '400': Die Anfrage, die du gesendet hast, war ungültig oder fehlerhaft. '403': Dir fehlt die Befugnis, diese Seite sehen zu können. - '404': Die Seite nach der du gesucht hast wurde nicht gefunden. + '404': Die Seite, nach der du gesucht hast, wurde nicht gefunden. '406': Diese Seite ist im gewünschten Format nicht verfügbar. - '410': Die Seite nach der du gesucht hast existiert hier nicht mehr. + '410': Die Seite, nach der du gesucht hast, existiert hier nicht mehr. '422': content: Sicherheitsüberprüfung fehlgeschlagen. Blockierst du Cookies? title: Sicherheitsüberprüfung fehlgeschlagen '429': Du wurdest gedrosselt '500': - content: Bitte verzeih, etwas ist bei uns schief gegangen. + content: Bitte verzeih', etwas ist bei uns schiefgegangen. title: Diese Seite ist kaputt '503': Die Seite konnte wegen eines temporären Serverfehlers nicht angezeigt werden. noscript_html: Bitte aktiviere JavaScript, um die Mastodon-Web-Anwendung zu verwenden. Alternativ kannst du auch eine der nativen Mastodon-Anwendungen für deine Plattform probieren. @@ -1155,7 +1168,7 @@ de: archive_takeout: date: Datum download: Dein Archiv herunterladen - hint_html: Du kannst ein Archiv deiner Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden in dem ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern. + hint_html: Du kannst ein Archiv deiner Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden in dem ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist, die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern. in_progress: Stelle dein Archiv zusammen... request: Dein Archiv anfragen size: Größe @@ -1181,9 +1194,11 @@ de: edit: add_keyword: Stichwort hinzufügen keywords: Stichwörter + statuses: Individuelle Beiträge + statuses_hint_html: Dieser Filter gilt für die Auswahl einzelner Beiträge, unabhängig davon, ob sie mit den unten stehenden Schlüsselwörtern übereinstimmen. Beiträge im Filter ansehen oder entfernen.. title: Filter bearbeiten errors: - deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie auf mehr als ein Filterschlüsselwort angewendet werden. Verwenden Sie eine neuere Anwendung oder die Web-Schnittstelle. + deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie auf mehr als ein Filterschlüsselwort angewendet werden. Verwende eine neuere Anwendung oder die Web-Schnittstelle. invalid_context: Ungültiger oder fehlender Kontext übergeben index: contexts: Filter in %{contexts} @@ -1194,10 +1209,23 @@ de: keywords: one: "%{count} Stichwort" other: "%{count} Stichwörter" + statuses: + one: "%{count} Beitrag" + other: "%{count} Beiträge" + statuses_long: + one: "%{count} individueller Beitrag ausgeblendet" + other: "%{count} individuelle Beiträge ausgeblendet" title: Filter new: save: Neuen Filter speichern title: Neuen Filter hinzufügen + statuses: + back_to_filter: Zurück zum Filter + batch: + remove: Vom Filter entfernen + index: + hint: Dieser Filter wird verwendet, um einzelne Beiträge unabhängig von anderen Kriterien auszuwählen. Du kannst mehr Beiträge zu diesem Filter über die Webschnittstelle hinzufügen. + title: Gefilterte Beiträge footer: developers: Entwickler more: Mehr… @@ -1205,12 +1233,22 @@ de: trending_now: In den Trends generic: all: Alle + all_items_on_page_selected_html: + one: "%{count} Element auf dieser Seite ausgewählt." + other: Alle %{count} Elemente auf dieser Seite ausgewählt. + all_matching_items_selected_html: + one: "%{count} Element trifft auf ihre Suche zu." + other: Alle %{count} Elemente, die Ihrer Suche entsprechen, werden ausgewählt. changes_saved_msg: Änderungen gespeichert! copy: Kopieren delete: Löschen + deselect: Auswahl für alle aufheben none: Keine order_by: Sortieren nach save_changes: Änderungen speichern + select_all_matching_items: + one: Wähle %{count} Element, das deiner Suche entspricht. + other: Wählen Sie alle %{count} Elemente, die Ihrer Suche entsprechen. today: heute validation_errors: one: Etwas ist noch nicht ganz richtig! Bitte korrigiere den Fehler @@ -1252,7 +1290,7 @@ de: one: 1 mal verwendet other: "%{count} mal verwendet" max_uses_prompt: Kein Limit - prompt: Generiere und teile Links um Zugang zu diesem Server zu geben + prompt: Generiere und teile Links, um Zugang zu diesem Server zu erteilen table: expires_at: Läuft ab uses: Verwendungen @@ -1274,7 +1312,7 @@ de: media_attachments: validations: images_and_video: Es kann kein Video an einen Beitrag, der bereits Bilder enthält, angehängt werden - not_ready: Dateien die noch nicht bearbeitet wurden, können nicht angehängt werden. Versuche es gleich noch einmal! + not_ready: Dateien, die noch nicht bearbeitet wurden, können nicht angehängt werden. Versuche es gleich noch einmal! too_many: Es können nicht mehr als 4 Dateien angehängt werden migrations: acct: benutzername@domain des neuen Kontos @@ -1300,7 +1338,7 @@ de: set_redirect: Umleitung einrichten warning: backreference_required: Das neue Konto muss zuerst so konfiguriert werden, dass es auf das alte Konto referenziert - before: 'Bevor du fortfährst, lese bitte diese Hinweise sorgfältig durch:' + before: 'Bevor du fortfährst, lies bitte diese Hinweise sorgfältig durch:' cooldown: Nach dem Migrieren wird es eine Abklingzeit geben, in der du das Konto nicht noch einmal migrieren kannst disabled_account: Dein aktuelles Konto wird nachher nicht vollständig nutzbar sein. Du hast jedoch Zugriff auf den Datenexport sowie die Reaktivierung. followers: Diese Aktion wird alle Folgende vom aktuellen Konto auf das neue Konto verschieben @@ -1312,24 +1350,13 @@ de: move_handler: carry_blocks_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du blockiert hast. carry_mutes_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du stummgeschaltet hast. - copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier waren deine letzten Notizen zu diesem Benutzer:' + copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier sind deine letzten Notizen zu diesem Benutzer:' notification_mailer: admin: report: subject: "%{name} hat eine Meldung eingereicht" sign_up: subject: "%{name} registrierte sich" - digest: - action: Zeige alle Benachrichtigungen - body: Hier ist eine kurze Zusammenfassung der Nachrichten, die du seit deinem letzten Besuch am %{since} verpasst hast - mention: "%{name} hat dich erwähnt:" - new_followers_summary: - one: Außerdem ist dir seit du weg warst ein weiteres Konto gefolgt! Juhu! - other: Außerdem sind dir seit du weg warst %{count} weitere Konten gefolgt! Großartig! - subject: - one: "1 neue Mitteilung seit deinem letzten Besuch 🐘" - other: "%{count} neue Mitteilungen seit deinem letzten Besuch 🐘" - title: In deiner Abwesenheit... favourite: body: 'Dein Beitrag wurde von %{name} favorisiert:' subject: "%{name} hat deinen Beitrag favorisiert" @@ -1374,7 +1401,7 @@ de: trillion: T otp_authentication: code_hint: Gib den von deiner Authentifizierungs-App generierten Code ein, um deine Anmeldung zu bestätigen - description_html: Wenn du Zwei-Faktor-Authentifizierung mit einer Authentifizierungs-App aktivierst, musst du, um dich anzumelden, im Besitz deines Handys sein, dass Tokens für dein Konto generiert. + description_html: Wenn du Zwei-Faktor-Authentifizierung mit einer Authentifizierungs-App aktivierst, musst du, um dich anzumelden, im Besitz deines Smartphones sein, welches Tokens für dein Konto generiert. enable: Aktivieren instructions_html: "Scanne diesen QR-Code in Google Authenticator oder einer ähnlichen TOTP-App auf deinem Handy. Von nun an generiert diese App Tokens, die du beim Anmelden eingeben musst." manual_instructions: 'Wenn du den QR-Code nicht scannen kannst und ihn manuell eingeben musst, ist hier das Klartext-Geheimnis:' @@ -1393,7 +1420,7 @@ de: duration_too_long: ist zu weit in der Zukunft duration_too_short: ist zu früh expired: Die Umfrage ist bereits vorbei - invalid_choice: Die gewählte Stimmenoption existiert nicht + invalid_choice: Die gewählte Abstimmoption existiert nicht over_character_limit: kann nicht länger als jeweils %{max} Zeichen sein too_few_options: muss mindestens einen Eintrag haben too_many_options: kann nicht mehr als %{max} Einträge beinhalten @@ -1420,7 +1447,7 @@ de: relationship: Beziehung remove_selected_domains: Entferne alle Follower von den ausgewählten Domains remove_selected_followers: Entferne ausgewählte Follower - remove_selected_follows: Entfolge ausgewählte Benutzer + remove_selected_follows: Entfolge ausgewählten Benutzern status: Kontostatus remote_follow: acct: Profilname@Domain, von wo aus du dieser Person folgen möchtest @@ -1428,7 +1455,7 @@ de: no_account_html: Noch kein Konto? Du kannst dich hier anmelden proceed: Weiter prompt: 'Du wirst dieser Person folgen:' - reason_html: "Warum ist dieser Schritt erforderlich?%{instance} ist möglicherweise nicht der Server auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten." + reason_html: "Warum ist dieser Schritt erforderlich?%{instance} ist möglicherweise nicht der Server, auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten." remote_interaction: favourite: proceed: Fortfahren zum Favorisieren @@ -1448,8 +1475,8 @@ de: account: Öffentliche Beiträge von @%{acct} tag: 'Öffentliche Beiträge mit dem Tag #%{hashtag}' scheduled_statuses: - over_daily_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, für heute erreicht - over_total_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, erreicht + over_daily_limit: Du hast das Limit für geplante Beiträge, welches %{limit} beträgt, für heute erreicht + over_total_limit: Du hast das Limit für geplante Beiträge, welches %{limit} beträgt, erreicht too_soon: Das geplante Datum muss in der Zukunft liegen sessions: activity: Letzte Aktivität @@ -1570,7 +1597,7 @@ de: enabled: Automatisch alte Beiträge löschen enabled_hint: Löscht automatisch deine Beiträge, sobald sie einen bestimmten Altersgrenzwert erreicht haben, es sei denn, sie entsprechen einer der folgenden Ausnahmen exceptions: Ausnahmen - explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht. + explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit, bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht. ignore_favs: Favoriten ignorieren ignore_reblogs: Boosts ignorieren interaction_exceptions: Ausnahmen basierend auf Interaktionen @@ -1578,15 +1605,15 @@ de: keep_direct: Direktnachrichten behalten keep_direct_hint: Löscht keine deiner Direktnachrichten keep_media: Beiträge mit Medienanhängen behalten - keep_media_hint: Löscht keine Ihrer Beiträge mit Medienanhängen + keep_media_hint: Löscht keinen deiner Beiträge mit Medienanhängen keep_pinned: Angeheftete Beiträge behalten - keep_pinned_hint: Löscht keine deiner angehefteten Beiträge + keep_pinned_hint: Löscht keinen deiner angehefteten Beiträge keep_polls: Umfragen behalten keep_polls_hint: Löscht keine deiner Umfragen keep_self_bookmark: Als Lesezeichen markierte Beiträge behalten - keep_self_bookmark_hint: Löscht nicht deine eigenen Beiträge, wenn du sie als Lesezeichen markiert hast + keep_self_bookmark_hint: Löscht deine eigenen Beiträge nicht, wenn du sie als Lesezeichen markiert hast keep_self_fav: Behalte die von dir favorisierten Beiträge - keep_self_fav_hint: Löscht nicht deine eigenen Beiträge, wenn du sie favorisiert hast + keep_self_fav_hint: Löscht deine eigenen Beiträge nicht, wenn du sie favorisiert hast min_age: '1209600': 2 Wochen '15778476': 6 Monate @@ -1615,10 +1642,10 @@ de:

Datenschutzerklärung

Welche Informationen sammeln wir?

    -
  • Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
  • -
  • Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
  • -
  • Direkte und "Nur Folgende"-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. Teile nicht irgendwelche sensiblen Informationen über Mastodon.
  • -
  • Internet Protocol-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
  • +
  • Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen, wie etwa einen Anzeigenamen oder eine Biografie, eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
  • +
  • Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt; das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, ist dies auch eine öffentlich verfügbare Information. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
  • +
  • Direkte und „Nur Folgende“-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. „Nur Folgende“-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet das, dass sie an andere Server ausgeliefert und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen, sie kopieren oder anderweitig weiterverteilen könnten. Teile keine sensiblen Informationen über Mastodon.
  • +
  • Internet-Protokoll-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.

Für was verwenden wir deine Informationen?

@@ -1678,7 +1705,7 @@ de: enabled: Zwei-Faktor-Authentisierung ist aktiviert enabled_success: Zwei-Faktor-Authentisierung erfolgreich aktiviert generate_recovery_codes: Wiederherstellungscodes generieren - lost_recovery_codes: Wiederherstellungscodes erlauben dir, wieder den Zugang zu deinem Konto zu erlangen, falls du dein Telefon verlieren solltest. Wenn du deine Wiederherstellungscodes verloren hast, kannst du sie hier neu generieren. Deine alten Wiederherstellungscodes werden damit ungültig gemacht. + lost_recovery_codes: Wiederherstellungscodes erlauben es dir, wieder Zugang zu deinem Konto zu erlangen, falls du dein Telefon verlieren solltest. Wenn du deine Wiederherstellungscodes verloren hast, kannst du sie hier neu generieren. Deine alten Wiederherstellungscodes werden damit ungültig gemacht. methods: Zwei-Faktor-Methoden otp: Authentifizierungs-App recovery_codes: Wiederherstellungs-Codes sichern @@ -1717,8 +1744,8 @@ de: disable: Du kannst dein Konto nicht mehr verwenden, aber dein Profil und andere Daten bleiben unversehrt. Du kannst ein Backup deiner Daten anfordern, die Kontoeinstellungen ändern oder dein Konto löschen. mark_statuses_as_sensitive: Einige deiner Beiträge wurden von den Moderator_innen von %{instance} als NSFW markiert. Das bedeutet, dass die Nutzer die Medien in den Beiträgen antippen müssen, bevor eine Vorschau angezeigt wird. Du kannst Medien in Zukunft als NSFW markieren, wenn du Beiträge verfasst. sensitive: Von nun an werden alle deine hochgeladenen Mediendateien als sensibel markiert und hinter einer Warnung versteckt. - silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. - suspend: Du kannst dein Konto nicht mehr verwenden und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst. + silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen, und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. + suspend: Du kannst dein Konto nicht mehr verwenden, und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst. reason: 'Grund:' statuses: 'Zitierte Beiträge:' subject: @@ -1742,16 +1769,16 @@ de: edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst oder deinen Anzeigenamen änderst und mehr. Wenn du deine Folgenden vorher überprüfen möchtest, bevor sie dir folgen können, dann kannst du dein Profil sperren. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten - final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich vorstellen mit dem #introductions-Hashtag.' + final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich mit dem #introductions-Hashtag vorstellen.' full_handle: Dein vollständiger Benutzername - full_handle_hint: Dies ist was du deinen Freunden sagen kannst, damit sie dich anschreiben oder von einem anderen Server folgen können. + full_handle_hint: Dies ist, was du deinen Freunden sagen kannst, damit sie dich anschreiben oder dir von einem anderen Server folgen können. review_preferences_action: Einstellungen ändern review_preferences_step: Stelle sicher, dass du deine Einstellungen einstellst, wie zum Beispiel welche E-Mails du gerne erhalten möchtest oder was für Privatsphäreneinstellungen voreingestellt werden sollten. Wenn dir beim Ansehen von GIFs nicht schwindelig wird, dann kannst du auch das automatische Abspielen dieser aktivieren. subject: Willkommen bei Mastodon tip_federated_timeline: Die föderierte Zeitleiste ist die sehr große Ansicht vom Mastodon-Netzwerk. Sie enthält aber auch nur Leute, denen du und deine Nachbarn folgen, sie ist also nicht komplett. tip_following: Du folgst standardmäßig deinen Server-Admin(s). Um mehr interessante Leute zu finden, kannst du die lokale oder öffentliche Zeitleiste durchsuchen. tip_local_timeline: Die lokale Zeitleiste ist eine Ansicht aller Leute auf %{instance}. Diese sind deine Nachbarn! - tip_mobile_webapp: Wenn dein mobiler Browser dir anbietet Mastodon zu deinem Startbildschirm hinzuzufügen, dann kannst du Benachrichtigungen erhalten. Es verhält sich wie eine native App in vielen Wegen! + tip_mobile_webapp: Wenn dein mobiler Browser dir anbietet, Mastodon zu deinem Startbildschirm hinzuzufügen, dann kannst du Benachrichtigungen erhalten. Es verhält sich wie eine native App in vielen Belangen! tips: Tipps title: Willkommen an Bord, %{name}! users: diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 0512ca129..4cc829f3b 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -21,18 +21,18 @@ de: action: E-Mail-Adresse verifizieren action_with_app: Bestätigen und zu %{app} zurückkehren explanation: Du hast einen Account auf %{host} mit dieser E-Mail-Adresse erstellt. Du bist nur noch einen Klick weit von der Aktivierung entfernt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. - explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst kannst du diese E-Mail ignorieren. + explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst hast, werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. extra_html: Bitte lies auch die Regeln des Servers und unsere Nutzungsbedingungen. subject: 'Mastodon: Bestätigung deines Kontos bei %{instance}' title: Verifiziere E-Mail-Adresse email_changed: explanation: 'Die E-Mail-Adresse deines Accounts wird geändert zu:' - extra: Wenn du deine E-Mail-Adresse nicht geändert hast, dann kann es vermutlich sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. + extra: Wenn du deine E-Mail-Adresse nicht geändert hast, dann wird es vermutlich so sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. subject: 'Mastodon: E-Mail-Adresse geändert' title: Neue E-Mail-Adresse password_change: explanation: Das Passwort für deinen Account wurde geändert. - extra: Wenn du dein Passwort nicht geändert hast, dann kann es vermutlich sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. + extra: Wenn du dein Passwort nicht geändert hast, dann wird es vermutlich so sein, dass jemand Zugriff auf deinem Account erlangt hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. subject: 'Mastodon: Passwort geändert' title: Passwort geändert reconfirmation_instructions: @@ -43,7 +43,7 @@ de: reset_password_instructions: action: Ändere Passwort explanation: Du hast ein neues Passwort für deinen Account angefragt. - extra: Wenn du diese Anfrage nicht gestellt hast, solltest du diese E-Mail ignorieren. Dein Passwort wird sich nicht ändern solange du den obigen Link anklickst und ein neues erstellst. + extra: Wenn du diese Anfrage nicht gestellt hast, solltest du diese E-Mail ignorieren. Dein Passwort wird sich nicht ändern, solange du den obigen Link anklickst und ein neues erstellst. subject: 'Mastodon: Passwort zurücksetzen' title: Passwort zurücksetzen two_factor_disabled: @@ -51,7 +51,7 @@ de: subject: 'Mastodon: Zwei‐Faktor‐Authentifizierung deaktiviert' title: 2FA deaktiviert two_factor_enabled: - explanation: Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Ein Token, der von der gepaarten TOTP-App generiert wird, wird für den Login benötigt. + explanation: Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Ein Token, das von der verbundenen TOTP-App generiert wird, wird für den Login benötigt. subject: 'Mastodon: Zwei‐Faktor‐Authentifizierung aktiviert' title: 2FA aktiviert two_factor_recovery_codes_changed: @@ -78,7 +78,7 @@ de: subject: 'Mastodon: Authentifizierung mit Sicherheitsschlüssel aktiviert' title: Sicherheitsschlüssel aktiviert omniauth_callbacks: - failure: Du konntest nicht mit deinem %{kind}-Konto angemeldet werden, weil »%{reason}«. + failure: Du konntest nicht mit deinem %{kind}-Konto angemeldet werden, weil „%{reason}“. success: Du hast dich erfolgreich mit deinem %{kind}-Konto angemeldet. passwords: no_token: Du kannst diese Seite nur über den Link aus der E-Mail zum Passwort-Zurücksetzen aufrufen. Wenn du einen solchen Link aufgerufen hast, stelle bitte sicher, dass du die vollständige Adresse aufrufst. @@ -91,8 +91,8 @@ de: signed_up: Willkommen! Du hast dich erfolgreich registriert. signed_up_but_inactive: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto inaktiv ist. signed_up_but_locked: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto gesperrt ist. - signed_up_but_pending: Eine Nachricht mit einem Bestätigungslink wurde an dich per E-Mail geschickt. Nachdem du diesen Link angeklickt hast werden wir deine Anfrage überprüfen. Du wirst benachrichtigt falls die Anfrage angenommen wurde. - signed_up_but_unconfirmed: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail. Darin ist erklärt, wie du dein Konto freischalten kannst. + signed_up_but_pending: Eine Nachricht mit einem Bestätigungslink wurde an dich per E-Mail geschickt. Nachdem du diesen Link angeklickt hast, werden wir deine Anfrage überprüfen. Du wirst benachrichtigt werden, falls die Anfrage angenommen wurde. + signed_up_but_unconfirmed: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail. Darin wird erklärt, wie du dein Konto freischalten kannst. update_needs_confirmation: Deine Daten wurden aktualisiert, aber du musst deine neue E-Mail-Adresse bestätigen. Du erhältst in wenigen Minuten eine E-Mail. Darin ist erklärt, wie du die Änderung deiner E-Mail-Adresse abschließen kannst. updated: Deine Daten wurden aktualisiert. sessions: @@ -112,4 +112,4 @@ de: not_locked: ist nicht gesperrt not_saved: one: '1 Fehler hat verhindert, dass %{resource} gespeichert wurde:' - other: "%{count} Fehler verhinderten, dass %{resource} gespeichert wurde:" + other: "%{count} Fehler haben verhindert, dass %{resource} gespeichert wurde:" diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml index 24aa076ee..82520cef7 100644 --- a/config/locales/devise.hu.yml +++ b/config/locales/devise.hu.yml @@ -12,7 +12,7 @@ hu: last_attempt: Már csak egy próbálkozásod maradt, mielőtt a fiókodat zároljuk. locked: A fiókodat zároltuk. not_found_in_database: Helytelen %{authentication_keys} vagy jelszó. - pending: A fiókod felülvizsgálat alatt áll, még mielőtt használhatnád. + pending: A fiókod még engedélyezésre vár. timeout: A munkameneted lejárt. Kérjük, a folytatáshoz jelentkezz be újra. unauthenticated: A folytatás előtt be kell jelentkezned vagy regisztrálnod kell. unconfirmed: A folytatás előtt meg kell erősítened az e-mail címed. diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml index 3f7e1b2d7..e4668a50f 100644 --- a/config/locales/doorkeeper.de.yml +++ b/config/locales/doorkeeper.de.yml @@ -72,7 +72,7 @@ de: revoke: Bist du sicher? index: authorized_at: Autorisiert am %{date} - description_html: Dies sind Anwendungen, die über die Programmierschnittstelle auf dein Konto zugreifen können. Wenn es Anwendungen gibt, die du hier nicht erkennst oder eine Anwendung sich falsch verhält, kannst du den Zugriff widerrufen. + description_html: Dies sind Anwendungen, die über die Programmierschnittstelle auf dein Konto zugreifen können. Wenn es Anwendungen gibt, die du hier nicht erkennst, oder wenn eine Anwendung sich falsch bzw. verdächtig verhält, kannst du den Zugriff widerrufen. last_used_at: Zuletzt verwendet am %{date} never_used: Nie verwendet scopes: Berechtigungen @@ -83,13 +83,13 @@ de: access_denied: Die Anfrage wurde durch Benutzer_in oder Autorisierungs-Server verweigert. credential_flow_not_configured: Das Konto konnte nicht gefunden werden, da Doorkeeper.configure.resource_owner_from_credentials nicht konfiguriert ist. invalid_client: 'Client-Authentifizierung ist fehlgeschlagen: Client unbekannt, keine Authentisierung mitgeliefert oder Authentisierungsmethode wird nicht unterstützt.' - invalid_grant: Die beigefügte Autorisierung ist ungültig, abgelaufen, wurde widerrufen, einem anderen Client ausgestellt oder der Weiterleitungs-URI stimmt nicht mit der Autorisierungs-Anfrage überein. + invalid_grant: Die beigefügte Autorisierung ist ungültig, abgelaufen, wurde widerrufen oder einem anderen Client ausgestellt, oder der Weiterleitungs-URI stimmt nicht mit der Autorisierungs-Anfrage überein. invalid_redirect_uri: Der beigefügte Weiterleitungs-URI ist ungültig. invalid_request: missing_param: 'Erforderlicher Parameter fehlt: %{value}.' request_not_authorized: Anfrage muss autorisiert werden. Benötigter Parameter für die Autorisierung der Anfrage fehlt oder ungültig. unknown: Der Anfrage fehlt ein benötigter Parameter, enthält einen nicht unterstützten Parameterwert oder ist anderweitig fehlerhaft. - invalid_resource_owner: Die angegebenen Zugangsdaten für das Konto sind ungültig oder das Konto kann nicht gefunden werden + invalid_resource_owner: Die angegebenen Zugangsdaten für das Konto sind ungültig, oder das Konto kann nicht gefunden werden invalid_scope: Die angeforderte Befugnis ist ungültig, unbekannt oder fehlerhaft. invalid_token: expired: Der Zugriffs-Token ist abgelaufen diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml index 7f4cca82b..86883bf14 100644 --- a/config/locales/doorkeeper.ru.yml +++ b/config/locales/doorkeeper.ru.yml @@ -133,7 +133,7 @@ ru: follows: Подписки lists: Списки media: Медиафайлы - mutes: Без звука + mutes: Игнорирует notifications: Уведомления push: Push-уведомления reports: Обращения @@ -164,7 +164,7 @@ ru: read:filters: видеть ваши фильтры read:follows: видеть ваши подписки read:lists: видеть ваши списки - read:mutes: видеть список игнорируемых + read:mutes: смотреть список игнорируемых read:notifications: получать уведомления read:reports: видеть ваши жалобы read:search: использовать поиск @@ -173,12 +173,13 @@ ru: write:accounts: редактировать ваш профиль write:blocks: блокировать учётные записи и домены write:bookmarks: добавлять посты в закладки + write:conversations: игнорировать и удалить разговоры write:favourites: отмечать посты как избранные write:filters: создавать фильтры write:follows: подписываться на людей write:lists: создавать списки write:media: загружать медиафайлы - write:mutes: добавлять в игнорируемое людей и обсуждения + write:mutes: игнорировать людей и обсуждения write:notifications: очищать список уведомлений write:reports: отправлять жалобы на других write:statuses: публиковать посты diff --git a/config/locales/el.yml b/config/locales/el.yml index 8bbb02822..8c7c29ac2 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -265,7 +265,6 @@ el: destroy_instance_html: Ο/Η %{name} εκκαθάρισε τον τομέα %{target} reject_user_html: "%{name} απορρίφθηκε εγγραφή από %{target}" unblock_email_account_html: "%{name} ξεμπλόκαρε τη διεύθυνση ηλεκτρονικού ταχυδρομείου του %{target}" - deleted_status: "(διαγραμμένη δημοσίευση)" empty: Δεν βρέθηκαν αρχεία καταγραφής. filter_by_action: Φιλτράρισμα ανά ενέργεια filter_by_user: Φιλτράρισμα ανά χρήστη @@ -581,9 +580,6 @@ el: desc_html: Εμφάνισε τη δημόσια ροή στην αρχική σελίδα title: Προεπισκόπιση ροής title: Ρυθμίσεις ιστότοπου - trendable_by_default: - desc_html: Επηρεάζει όσες ετικέτες δεν είχαν απαγορευτεί νωρίτερα - title: Επέτρεψε στις ετικέτες να εμφανίζονται στις τάσεις χωρίς να χρειάζεται πρώτα έγκριση trends: desc_html: Δημόσια εμφάνιση ετικετών που έχουν ήδη εγκριθεί και είναι δημοφιλείς title: Δημοφιλείς ετικέτες @@ -946,17 +942,6 @@ el: subject: "%{name} υπέβαλε μια αναφορά" sign_up: subject: "%{name} έχει εγγραφεί" - digest: - action: Δες όλες τις ειδοποιήσεις - body: Μια σύνοψη των μηνυμάτων που έχασες από την τελευταία επίσκεψή σου στις %{since} - mention: 'Ο/Η %{name} σε ανέφερε στις:' - new_followers_summary: - one: Επίσης, απέκτησες έναν νέο ακόλουθο ενώ ήσουν μακριά! - other: Επίσης, απέκτησες %{count} νέους ακόλουθους ενώ ήσουν μακριά! Εκπληκτικό! - subject: - one: "1 νέα ειδοποίηση από την τελευταία επίσκεψή σου 🐘" - other: "%{count} νέες ειδοποιήσεις από την τελευταία επίσκεψή σου 🐘" - title: Ενώ έλειπες... favourite: body: 'Η κατάστασή σου αγαπήθηκε από τον/την %{name}:' subject: Ο/Η %{name} αγάπησε την κατάστασή σου diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 3eabb665a..cca9b0531 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -261,7 +261,6 @@ eo: create_ip_block_html: "%{name} kreis regulon por IP %{target}" demote_user_html: "%{name} degradis uzanton %{target}" destroy_announcement_html: "%{name} forigis anoncon %{target}" - destroy_custom_emoji_html: "%{name} neniigis la emoĝion %{target}" destroy_domain_allow_html: "%{name} forigis domajnon %{target} el la blanka listo" destroy_domain_block_html: "%{name} malblokis domajnon %{target}" destroy_email_domain_block_html: "%{name} malblokis retpoŝtan domajnon %{target}" @@ -280,7 +279,6 @@ eo: suspend_account_html: "%{name} suspendis la konton de %{target}" unsuspend_account_html: "%{name} reaktivigis la konton de %{target}" update_announcement_html: "%{name} ĝisdatigis anoncon %{target}" - deleted_status: "(forigita mesaĝo)" empty: Neniu protokolo trovita. filter_by_action: Filtri per ago filter_by_user: Filtri per uzanto @@ -969,17 +967,6 @@ eo: moderation: title: Moderigado notification_mailer: - digest: - action: Vidi ĉiujn sciigojn - body: Jen eta resumo de la mesaĝoj, kiujn vi mistrafis ekde via lasta vizito en %{since} - mention: "%{name} menciis vin en:" - new_followers_summary: - one: Ankaŭ, vi ekhavis novan sekvanton en via foresto! Jej! - other: Ankaŭ, vi ekhavis %{count} novajn sekvantojn en via foresto! Mirinde! - subject: - one: "1 nova sciigo ekde via lasta vizito 🐘" - other: "%{count} novaj sciigoj ekde via lasta vizito 🐘" - title: En via foresto… favourite: body: "%{name} stelumis vian mesaĝon:" subject: "%{name} stelumis vian mesaĝon" diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 72c2ad347..21c2dde6c 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -235,17 +235,21 @@ es-AR: approve_user: Aprobar usuario assigned_to_self_report: Asignar denuncia change_email_user: Cambiar correo electrónico del usuario + change_role_user: Cambiar rol del usuario confirm_user: Confirmar usuario create_account_warning: Crear advertencia create_announcement: Crear anuncio + create_canonical_email_block: Crear bloqueo de correo electrónico create_custom_emoji: Crear emoji personalizado create_domain_allow: Crear permiso de dominio create_domain_block: Crear bloqueo de dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regla de dirección IP create_unavailable_domain: Crear dominio no disponible + create_user_role: Crear rol demote_user: Descender usuario destroy_announcement: Eliminar anuncio + destroy_canonical_email_block: Eliminar bloqueo de correo electrónico destroy_custom_emoji: Eliminar emoji personalizado destroy_domain_allow: Eliminar permiso de dominio destroy_domain_block: Eliminar bloqueo de dominio @@ -254,6 +258,7 @@ es-AR: destroy_ip_block: Eliminar regla de dirección IP destroy_status: Eliminar mensaje destroy_unavailable_domain: Eliminar dominio no disponible + destroy_user_role: Destruir rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar emoji personalizado disable_sign_in_token_auth_user: Deshabilitar autenticación de token por correo electrónico para el usuario @@ -280,24 +285,30 @@ es-AR: update_announcement: Actualizar anuncio update_custom_emoji: Actualizar emoji personalizado update_domain_block: Actualizar bloque de dominio + update_ip_block: Actualizar regla de dirección IP update_status: Actualizar mensaje + update_user_role: Actualizar rol actions: approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} se asignó la denuncia %{target} a sí" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" + change_role_user_html: "%{name} cambió el rol de %{target}" confirm_user_html: "%{name} confirmó la dirección de correo del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} creó el nuevo anuncio %{target}" + create_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{target}" create_custom_emoji_html: "%{name} subió nuevo emoji %{target}" create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}" create_domain_block_html: "%{name} bloqueó el dominio %{target}" create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó la regla para la dirección IP %{target}" create_unavailable_domain_html: "%{name} detuvo la entrega al dominio %{target}" + create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} bajó de nivel al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" - destroy_custom_emoji_html: "%{name} destruyó el emoji %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}" + destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} no permitió la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" @@ -305,6 +316,7 @@ es-AR: destroy_ip_block_html: "%{name} eliminó la regla para la dirección IP %{target}" destroy_status_html: "%{name} eliminó el mensaje de %{target}" destroy_unavailable_domain_html: "%{name} reanudó la entrega al dominio %{target}" + destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} deshabilitó el requerimiento de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} deshabilitó el emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} deshabilitó la autenticación de token por correo electrónico para %{target}" @@ -331,8 +343,9 @@ es-AR: update_announcement_html: "%{name} actualizó el anuncio %{target}" update_custom_emoji_html: "%{name} actualizó el emoji %{target}" update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}" + update_ip_block_html: "%{name} cambió la regla para la dirección IP %{target}" update_status_html: "%{name} actualizó el mensaje de %{target}" - deleted_status: "[mensaje eliminado]" + update_user_role_html: "%{name} cambió el rol %{target}" empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario @@ -795,8 +808,8 @@ es-AR: title: Permitir acceso no autorizado a la línea temporal pública title: Configuración del sitio trendable_by_default: - desc_html: Afecta a etiquetas que no fueron rechazadas previamente - title: Permitir que las etiquetas sean tendencia sin revisión previa + desc_html: El contenido de tendencias específicas todavía puede ser explícitamente desactivado + title: Permitir tendencias sin revisión previa trends: desc_html: Mostrar públicamente etiquetas previamente revisadas que son tendencia actualmente title: Tendencias @@ -1182,7 +1195,7 @@ es-AR: add_keyword: Agregar palabra clave keywords: Palabras clave statuses: Mensajes individuales - statuses_hint_html: Este filtro se aplica a los mensajes individuales seleccionados, independientemente de si coinciden con las palabras clave de abajo. Podés revisar estos mensajes y eliminarlos del filtro haciendo clic acá. + statuses_hint_html: Este filtro se aplica a la selección de mensajes individuales, independientemente de si coinciden con las palabras clave a continuación. Revisar o quitar mensajes del filtro. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar de esta aplicación porque se aplican a más de una palabra clave de filtro. Usá una aplicación más reciente o la interface web. @@ -1211,7 +1224,7 @@ es-AR: batch: remove: Quitar del filtro index: - hint: Este filtro se aplica a la selección de mensajes individuales independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. + hint: Este filtro se aplica a la selección de mensajes individuales, independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. title: Mensajes filtrados footer: developers: Desarrolladores @@ -1220,12 +1233,22 @@ es-AR: trending_now: Tendencia ahora generic: all: Todas + all_items_on_page_selected_html: + one: "%{count} elemento en esta página está seleccionado." + other: Todos los %{count} elementos en esta página están seleccionados. + all_matching_items_selected_html: + one: "%{count} elemento que coincide con tu búsqueda está seleccionado." + other: Todos los %{count} elementos que coinciden con tu búsqueda están seleccionados. changes_saved_msg: "¡Cambios guardados exitosamente!" copy: Copiar delete: Eliminar + deselect: Deseleccionar todo none: "[Ninguna]" order_by: Ordenar por save_changes: Guardar cambios + select_all_matching_items: + one: Seleccionar %{count} elemento que coincide con tu búsqueda. + other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda. today: hoy validation_errors: one: "¡Falta algo! Por favor, revisá el error abajo" @@ -1334,17 +1357,6 @@ es-AR: subject: "%{name} envió una denuncia" sign_up: subject: Se registró %{name} - digest: - action: Ver todas las notificaciones - body: Acá tenés un resumen de los mensajes que te perdiste desde tu última visita, el %{since} - mention: "%{name} te mencionó en:" - new_followers_summary: - one: Además, ¡ganaste un nuevo seguidor mientras estabas ausente! ¡Esa! - other: Además, ¡ganaste %{count} nuevos seguidores mientras estabas ausente! ¡Esssa! - subject: - one: "1 nueva notificación desde tu última visita 🐘" - other: "%{count} nuevas notificaciones desde tu última visita 🐘" - title: En tu ausencia... favourite: body: 'Tu mensaje fue marcado como favorito por %{name}:' subject: "%{name} marcó tu mensaje como favorito" diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 8faa88f56..4f387128c 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -235,6 +235,7 @@ es-MX: approve_user: Aprobar Usuario assigned_to_self_report: Asignar Reporte change_email_user: Cambiar Correo Electrónico del Usuario + change_role_user: Cambiar Rol de Usuario confirm_user: Confirmar Usuario create_account_warning: Crear Advertencia create_announcement: Crear Anuncio @@ -244,6 +245,7 @@ es-MX: create_email_domain_block: Crear Bloqueo de Dominio de Correo Electrónico create_ip_block: Crear regla IP create_unavailable_domain: Crear Dominio No Disponible + create_user_role: Crear Rol demote_user: Degradar Usuario destroy_announcement: Eliminar Anuncio destroy_custom_emoji: Eliminar Emoji Personalizado @@ -254,6 +256,7 @@ es-MX: destroy_ip_block: Eliminar regla IP destroy_status: Eliminar Estado destroy_unavailable_domain: Eliminar Dominio No Disponible + destroy_user_role: Destruir Rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar Emoji Personalizado disable_sign_in_token_auth_user: Deshabilitar la Autenticación por Token de Correo Electrónico para el Usuario @@ -281,11 +284,13 @@ es-MX: update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio update_status: Actualizar Estado + update_user_role: Actualizar Rol actions: approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} asignó el informe %{target} a sí mismo" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" + change_role_user_html: "%{name} cambió el rol de %{target}" confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} ha creado un nuevo anuncio %{target}" @@ -295,9 +300,10 @@ es-MX: create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó una regla para la IP %{target}" create_unavailable_domain_html: "%{name} detuvo las entregas al dominio %{target}" + create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" - destroy_custom_emoji_html: "%{name} destruyó emoji %{target}" + destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" @@ -305,6 +311,7 @@ es-MX: destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}" destroy_status_html: "%{name} eliminó el estado por %{target}" destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}" + destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} desactivó el requisito de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} desactivó el emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} ha deshabilitado la autenticación por token de correo electrónico para %{target}" @@ -332,7 +339,7 @@ es-MX: update_custom_emoji_html: "%{name} actualizó el emoji %{target}" update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}" update_status_html: "%{name} actualizó el estado de %{target}" - deleted_status: "(estado borrado)" + update_user_role_html: "%{name} cambió el rol %{target}" empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario @@ -794,9 +801,6 @@ es-MX: desc_html: Mostrar línea de tiempo pública en la portada title: Previsualización title: Ajustes del sitio - trendable_by_default: - desc_html: Afecta a etiquetas que no han sido previamente rechazadas - title: Permitir que las etiquetas sean tendencia sin revisión previa trends: desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia title: Hashtags de tendencia @@ -1181,6 +1185,8 @@ es-MX: edit: add_keyword: Añadir palabra clave keywords: Palabras clave + statuses: Publicaciones individuales + statuses_hint_html: Este filtro se aplica a la selección de publicaciones individuales independientemente de si coinciden con las palabras clave a continuación. Revise o elimine publicaciones del filtro. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web. @@ -1194,10 +1200,23 @@ es-MX: keywords: one: "%{count} palabra clave" other: "%{count} palabras clave" + statuses: + one: "%{count} publicación" + other: "%{count} publicaciones" + statuses_long: + one: "%{count} publicación individual oculta" + other: "%{count} publicaciones individuales ocultas" title: Filtros new: save: Guardar nuevo filtro title: Añadir un nuevo filtro + statuses: + back_to_filter: Volver a filtrar + batch: + remove: Eliminar del filtro + index: + hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. + title: Publicaciones filtradas footer: developers: Desarrolladores more: Mas… @@ -1205,12 +1224,22 @@ es-MX: trending_now: Tendencia ahora generic: all: Todos + all_items_on_page_selected_html: + one: "%{count} elemento en esta página está seleccionado." + other: Todos los %{count} elementos en esta página están seleccionados. + all_matching_items_selected_html: + one: "%{count} elemento que coincide con su búsqueda está seleccionado." + other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados. changes_saved_msg: "¡Cambios guardados con éxito!" copy: Copiar delete: Eliminar + deselect: Deseleccionar todo none: Nada order_by: Ordenar por save_changes: Guardar cambios + select_all_matching_items: + one: Seleccionar %{count} elemento que coincide con tu búsqueda. + other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda. today: hoy validation_errors: one: "¡Algo no está bien! Por favor, revisa el error" @@ -1319,17 +1348,6 @@ es-MX: subject: "%{name} envió un informe" sign_up: subject: "%{name} se registró" - digest: - action: Ver todas las notificaciones - body: Un resumen de los mensajes que perdiste en desde tu última visita, el %{since} - mention: "%{name} te ha mencionado en:" - new_followers_summary: - one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!" - other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!" - subject: - one: "1 nueva notificación desde tu última visita 🐘" - other: "%{count} nuevas notificaciones desde tu última visita 🐘" - title: En tu ausencia… favourite: body: 'Tu estado fue marcado como favorito por %{name}:' subject: "%{name} marcó como favorito tu estado" diff --git a/config/locales/es.yml b/config/locales/es.yml index 8d2ed1a33..db4785d2c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -235,17 +235,21 @@ es: approve_user: Aprobar Usuario assigned_to_self_report: Asignar Reporte change_email_user: Cambiar Correo Electrónico del Usuario + change_role_user: Cambiar Rol de Usuario confirm_user: Confirmar Usuario create_account_warning: Crear Advertencia create_announcement: Crear Anuncio + create_canonical_email_block: Crear Bloqueo de Correo Electrónico create_custom_emoji: Crear Emoji Personalizado create_domain_allow: Crear Permiso de Dominio create_domain_block: Crear Bloqueo de Dominio create_email_domain_block: Crear Bloqueo de Dominio de Correo Electrónico create_ip_block: Crear regla IP create_unavailable_domain: Crear Dominio No Disponible + create_user_role: Crear Rol demote_user: Degradar Usuario destroy_announcement: Eliminar Anuncio + destroy_canonical_email_block: Eliminar Bloqueo de Correo Electrónico destroy_custom_emoji: Eliminar Emoji Personalizado destroy_domain_allow: Eliminar Permiso de Dominio destroy_domain_block: Eliminar Bloqueo de Dominio @@ -254,6 +258,7 @@ es: destroy_ip_block: Eliminar regla IP destroy_status: Eliminar Estado destroy_unavailable_domain: Eliminar Dominio No Disponible + destroy_user_role: Destruir Rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar Emoji Personalizado disable_sign_in_token_auth_user: Deshabilitar la Autenticación por Token de Correo Electrónico para el Usuario @@ -280,24 +285,30 @@ es: update_announcement: Actualizar Anuncio update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio + update_ip_block: Actualizar regla IP update_status: Actualizar Estado + update_user_role: Actualizar Rol actions: approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} asignó el informe %{target} a sí mismo" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" + change_role_user_html: "%{name} cambió el rol de %{target}" confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} ha creado un nuevo anuncio %{target}" + create_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{target}" create_custom_emoji_html: "%{name} subió un nuevo emoji %{target}" create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}" create_domain_block_html: "%{name} bloqueó el dominio %{target}" create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó una regla para la IP %{target}" create_unavailable_domain_html: "%{name} detuvo las entregas al dominio %{target}" + create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" - destroy_custom_emoji_html: "%{name} destruyó emoji %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}" + destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" @@ -305,6 +316,7 @@ es: destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}" destroy_status_html: "%{name} eliminó el estado por %{target}" destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}" + destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} desactivó el requisito de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} desactivó el emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} ha deshabilitado la autenticación por token de correo electrónico para %{target}" @@ -331,8 +343,9 @@ es: update_announcement_html: "%{name} actualizó el anuncio %{target}" update_custom_emoji_html: "%{name} actualizó el emoji %{target}" update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}" + update_ip_block_html: "%{name} cambió la regla para la IP %{target}" update_status_html: "%{name} actualizó el estado de %{target}" - deleted_status: "(estado borrado)" + update_user_role_html: "%{name} cambió el rol %{target}" empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario @@ -795,8 +808,8 @@ es: title: Previsualización title: Ajustes del sitio trendable_by_default: - desc_html: Afecta a etiquetas que no han sido previamente rechazadas - title: Permitir que las etiquetas sean tendencia sin revisión previa + desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado + title: Permitir tendencias sin revisión previa trends: desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia title: Hashtags de tendencia @@ -1182,7 +1195,7 @@ es: add_keyword: Añadir palabra clave keywords: Palabras clave statuses: Publicaciones individuales - statuses_hint_html: Este filtro se aplica a las publicaciones individuales seleccionadas, independientemente de si coinciden con las palabras clave de abajo. Puedes revisar estos mensajes y eliminarlos del filtro pulsando aquí. + statuses_hint_html: Este filtro se aplica a la selección de publicaciones individuales independientemente de si coinciden con las palabras clave a continuación. Revise o elimine publicaciones del filtro. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web. @@ -1211,7 +1224,7 @@ es: batch: remove: Eliminar del filtro index: - hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más mensajes a este filtro desde la interfaz Web. + hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. title: Publicaciones filtradas footer: developers: Desarrolladores @@ -1220,12 +1233,22 @@ es: trending_now: Tendencia ahora generic: all: Todos + all_items_on_page_selected_html: + one: "%{count} elemento en esta página está seleccionado." + other: Todos los %{count} elementos en esta página están seleccionados. + all_matching_items_selected_html: + one: "%{count} elemento que coincide con su búsqueda está seleccionado." + other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados. changes_saved_msg: "¡Cambios guardados con éxito!" copy: Copiar delete: Eliminar + deselect: Deseleccionar todo none: Nada order_by: Ordenar por save_changes: Guardar cambios + select_all_matching_items: + one: Seleccionar %{count} elemento que coincide con tu búsqueda. + other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda. today: hoy validation_errors: one: "¡Algo no está bien! Por favor, revisa el error" @@ -1334,17 +1357,6 @@ es: subject: "%{name} envió un informe" sign_up: subject: "%{name} se registró" - digest: - action: Ver todas las notificaciones - body: Un resumen de los mensajes que perdiste en desde tu última visita, el %{since} - mention: "%{name} te ha mencionado en:" - new_followers_summary: - one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!" - other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!" - subject: - one: "1 nueva notificación desde tu última visita 🐘" - other: "%{count} nuevas notificaciones desde tu última visita 🐘" - title: En tu ausencia… favourite: body: 'Tu estado fue marcado como favorito por %{name}:' subject: "%{name} marcó como favorito tu estado" diff --git a/config/locales/et.yml b/config/locales/et.yml index 6aab7a219..5b354afd9 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -215,7 +215,6 @@ et: update_announcement: Uuenda teadaannet update_custom_emoji: Uuendas kohandatud emotikoni update_status: Uuendas staatust - deleted_status: "(kustutatud staatus)" empty: Logisi ei leitud. filter_by_action: Filtreeri tegevuse järgi filter_by_user: Filtreeri kasutaja järgi @@ -463,9 +462,6 @@ et: desc_html: Kuva avalikku ajajoont esilehel title: Ajajoone eelvaade title: Lehe seaded - trendable_by_default: - desc_html: Puudutab silte, mis pole varem keelatud - title: Luba siltide trendimine ilma eelneva ülevaatuseta trends: desc_html: Kuva avalikult eelnevalt üle vaadatud sildid, mis on praegu trendikad title: Populaarsed sildid praegu @@ -770,14 +766,6 @@ et: moderation: title: Moderatsioon notification_mailer: - digest: - action: Vaata kõiki teateid - body: Siin on kiire ülevaade sellest, mis sõnumeid Te ei näinud pärast Teie viimast külastust %{since} - mention: "%{name} mainis Teid postituses:" - new_followers_summary: - one: Ja veel, Te saite ühe uue jälgija kui Te olite eemal! Jee! - other: Ja veel, Te saite %{count} uut jälgijat kui Te olite eemal! Hämmastav! - title: Teie puudumisel... favourite: body: "%{name} lisas Teie staatuse lemmikutesse:" subject: "%{name} märkis su staatuse lemmikuks" diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 3202b9b9c..f0910aaba 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -285,7 +285,6 @@ eu: create_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketa gelditu du" demote_user_html: "%{name} erabiltzaileak %{target} erabiltzailea mailaz jaitsi du" destroy_announcement_html: "%{name} erabiltzaileak %{target} iragarpena ezabatu du" - destroy_custom_emoji_html: "%{name} erabiltzaileak %{target} emojia suntsitu du" destroy_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federatzea debekatu du" destroy_domain_block_html: "%{name} erabiltzaileak %{target} domeinua desblokeatu du" destroy_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua desblokeatu du" @@ -320,7 +319,6 @@ eu: update_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a eguneratu du" update_domain_block_html: "%{name} erabiltzaileak %{target} domeinu-blokeoa eguneratu du" update_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa eguneratu du" - deleted_status: "(ezabatutako bidalketa)" empty: Ez da egunkaririk aurkitu. filter_by_action: Iragazi ekintzen arabera filter_by_user: Iragazi erabiltzaileen arabera @@ -697,9 +695,6 @@ eu: desc_html: Bistaratu denbora-lerro publikoa hasiera orrian title: Denbora-lerroaren aurrebista title: Gunearen ezarpenak - trendable_by_default: - desc_html: Aurretik debekatu ez diren traola guztiei eragiten dio - title: Baimendu traolak joera bihurtzea aurretik errebisatu gabe trends: desc_html: Erakutsi publikoki orain joeran dauden aurretik errebisatutako traolak title: Traolak joeran @@ -1127,14 +1122,6 @@ eu: carry_mutes_over_text: Erabiltzaile hau %{acct} kontutik dator, zeina isilarazita daukazun. copy_account_note_text: 'Erabiltzaile hau %{acct} kontutik dator, hemen berari buruzko zure aurreko oharrak:' notification_mailer: - digest: - action: Ikusi jakinarazpen guztiak - body: Hona zure %{since}(e)ko azken bisitatik galdu dituzun mezuen laburpen bat - mention: "%{name}(e)k aipatu zaitu:" - new_followers_summary: - one: Kanpoan zeundela jarraitzaile berri bat gehitu zaizu! - other: Kanpoan zeundela %{count} jarraitzaile berri bat gehitu zaizkizu! - title: Kanpoan zeundela... favourite: body: "%{name}(e)k zure bidalketa gogoko du:" subject: "%{name}(e)k zure bidalketa gogoko du" diff --git a/config/locales/fa.yml b/config/locales/fa.yml index d6acaf534..fa6448770 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -284,7 +284,6 @@ fa: create_unavailable_domain_html: "%{name} تحویل محتوا به دامنه %{target} را متوقف کرد" demote_user_html: "%{name} کاربر %{target} را تنزل داد" destroy_announcement_html: "%{name} اعلامیهٔ %{target} را حذف کرد" - destroy_custom_emoji_html: "%{name} اموجی %{target} را نابود کرد" destroy_domain_allow_html: "%{name} دامنهٔ %{target} را از فهرست مجاز برداشت" destroy_domain_block_html: "%{name} انسداد دامنهٔ %{target} را رفع کرد" destroy_email_domain_block_html: "%{name} انسداد دامنهٔ رایانامهٔ %{target} را برداشت" @@ -319,7 +318,6 @@ fa: update_custom_emoji_html: "%{name} شکلک %{target} را به‌روز کرد" update_domain_block_html: "%{name} مسدودسازی دامنه را برای %{target} به‌روزرسانی کرد" update_status_html: "%{name} نوشتهٔ %{target} را به‌روز کرد" - deleted_status: "(نوشتهٔ پاک‌شده)" empty: هیچ گزارشی پیدا نشد. filter_by_action: پالایش بر اساس کنش filter_by_user: پالایش بر اساس کاربر @@ -677,9 +675,6 @@ fa: desc_html: نوشته‌های عمومی این سرور را در صفحهٔ آغازین نشان دهید title: پیش‌نمایش نوشته‌ها title: تنظیمات سایت - trendable_by_default: - desc_html: روی برچسب‌هایی که پیش از این ممنوع نشده‌اند تأثیر می‌گذارد - title: بگذارید که برچسب‌های پرطرفدار بدون بازبینی قبلی نمایش داده شوند trends: desc_html: برچسب‌های عمومی که پیش‌تر بازبینی شده‌اند و هم‌اینک پرطرفدارند title: پرطرفدارها @@ -1093,14 +1088,6 @@ fa: admin: sign_up: subject: "%{name} ثبت نام کرد" - digest: - action: دیدن تمامی آگاهی‌ها - body: خلاصه‌ای از پیغام‌هایی که از زمان آخرین بازدید شما در %{since} فرستاده شد - mention: "%{name} این‌جا از شما نام برد:" - new_followers_summary: - one: در ضمن، وقتی که نبودید یک پیگیر تازه پیدا کردید! ای ول! - other: در ضمن، وقتی که نبودید %{count} پیگیر تازه پیدا کردید! چه عالی! - title: در مدتی که نبودید... favourite: body: "%{name} این نوشتهٔ شما را پسندید:" subject: "%{name} نوشتهٔ شما را پسندید" diff --git a/config/locales/fi.yml b/config/locales/fi.yml index b48d8ab9f..397a40e69 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -235,6 +235,7 @@ fi: approve_user: Hyväksy käyttäjä assigned_to_self_report: Määritä raportti change_email_user: Vaihda sähköposti käyttäjälle + change_role_user: Muuta käyttäjän roolia confirm_user: Vahvista käyttäjä create_account_warning: Luo varoitus create_announcement: Luo ilmoitus @@ -244,6 +245,7 @@ fi: create_email_domain_block: Estä sähköpostipalvelin create_ip_block: Luo IP-sääntö create_unavailable_domain: Luo ei-saatavilla oleva verkkotunnus + create_user_role: Luo rooli demote_user: Alenna käyttäjä destroy_announcement: Poista ilmoitus destroy_custom_emoji: Poista mukautettu emoji @@ -254,6 +256,7 @@ fi: destroy_ip_block: Poista IP-sääntö destroy_status: Poista julkaisu destroy_unavailable_domain: Poista ei-saatavilla oleva verkkotunnus + destroy_user_role: Hävitä rooli disable_2fa_user: Poista kaksivaiheinen tunnistautuminen käytöstä disable_custom_emoji: Estä mukautettu emoji disable_sign_in_token_auth_user: Estä käyttäjältä sähköpostitunnuksen todennus @@ -281,11 +284,13 @@ fi: update_custom_emoji: Päivitä muokattu emoji update_domain_block: Päivitä verkkotunnuksen esto update_status: Päivitä viesti + update_user_role: Päivitä rooli actions: approve_appeal_html: "%{name} hyväksyi moderointipäätöksen muutoksenhaun lähettäjältä %{target}" approve_user_html: "%{name} hyväksyi käyttäjän rekisteröitymisen kohteesta %{target}" assigned_to_self_report_html: "%{name} otti raportin %{target} tehtäväkseen" change_email_user_html: "%{name} vaihtoi käyttäjän %{target} sähköpostiosoitteen" + change_role_user_html: "%{name} muutti roolia %{target}" confirm_user_html: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen" create_account_warning_html: "%{name} lähetti varoituksen henkilölle %{target}" create_announcement_html: "%{name} loi uuden ilmoituksen %{target}" @@ -295,6 +300,7 @@ fi: create_email_domain_block_html: "%{name} esti sähköpostin %{target}" create_ip_block_html: "%{name} luonut IP-säännön %{target}" create_unavailable_domain_html: "%{name} pysäytti toimituksen verkkotunnukseen %{target}" + create_user_role_html: "%{name} luonut %{target} roolin" demote_user_html: "%{name} alensi käyttäjän %{target}" destroy_announcement_html: "%{name} poisti ilmoituksen %{target}" destroy_custom_emoji_html: "%{name} poisti emojin %{target}" @@ -305,6 +311,7 @@ fi: destroy_ip_block_html: "%{name} poisti IP-säännön %{target}" destroy_status_html: "%{name} poisti viestin %{target}" destroy_unavailable_domain_html: "%{name} jatkoi toimitusta verkkotunnukseen %{target}" + destroy_user_role_html: "%{name} poisti %{target} roolin" disable_2fa_user_html: "%{name} poisti käyttäjältä %{target} vaatimuksen kaksivaiheisen todentamiseen" disable_custom_emoji_html: "%{name} poisti emojin %{target}" disable_sign_in_token_auth_user_html: "%{name} poisti sähköpostitunnuksen %{target} todennuksen käytöstä" @@ -332,7 +339,7 @@ fi: update_custom_emoji_html: "%{name} päivitti emojin %{target}" update_domain_block_html: "%{name} päivitti verkkotunnuksen %{target}" update_status_html: "%{name} päivitti viestin %{target}" - deleted_status: "(poistettu julkaisu)" + update_user_role_html: "%{name} muutti roolia %{target}" empty: Lokeja ei löytynyt. filter_by_action: Suodata tapahtuman mukaan filter_by_user: Suodata käyttäjän mukaan @@ -480,6 +487,9 @@ fi: unsuppress: Palauta seuraa suositus instances: availability: + description_html: + one: Jos toimitus verkkotunnukseen epäonnistuu %{count} päivä ilman onnistumista, uusia yrityksiä ei tehdä ennen kuin toimitus alkaen verkkotunnukselta on vastaanotettu. + other: Jos toimitus verkkotunnukselle, epäonnistuu %{count} eri päivänä ilman onnistumista, uusia yrityksiä ei tehdä ennen kuin toimitus alkaen verkkotunnuselta on vastaanotettu. failure_threshold_reached: Epäonnistumisen kynnys saavutettu %{date}. failures_recorded: one: Epäonnistuneita yrityksiä %{count} päivässä. @@ -660,6 +670,53 @@ fi: delete: Poista description_html: Käyttäjän roolit, voit muokata toimintoja ja alueita mitä sinun Mastodon käyttäjät voivat käyttää. edit: Muokkaa "%{name}" roolia + everyone: Oletus käyttöoikeudet + everyone_full_description_html: Tämä on perusrooli joka vaikuttaa kaikkiin käyttäjiin, jopa ilman määrättyä roolia. Kaikki muut roolit perivät sen käyttöoikeudet. + permissions_count: + one: "%{count} käyttöoikeus" + other: "%{count} käyttöoikeutta" + privileges: + administrator: Ylläpitäjä + administrator_description: Käyttäjät, joilla on tämä käyttöoikeus, ohittavat jokaisen käyttöoikeuden + delete_user_data: Poista käyttäjän tiedot + delete_user_data_description: Salli käyttäjien poistaa muiden käyttäjien tiedot viipymättä + invite_users: Kutsu käyttäjiä + invite_users_description: Sallii käyttäjien kutsua uusia ihmisiä palvelimelle + manage_announcements: Hallitse Ilmoituksia + manage_announcements_description: Salli käyttäjien hallita ilmoituksia palvelimella + manage_appeals: Hallitse valituksia + manage_appeals_description: Antaa käyttäjien tarkastella valvontatoimia koskevia valituksia + manage_blocks: Hallitse lohkoja + manage_blocks_description: Sallii käyttäjien estää sähköpostipalvelujen ja IP-osoitteiden käytön + manage_custom_emojis: Hallita mukautettuja hymiöitä + manage_custom_emojis_description: Salli käyttäjien hallita mukautettuja hymiöitä palvelimella + manage_federation: Hallita liitoksia + manage_federation_description: Sallii käyttäjien estää tai sallia liitoksen muiden verkkotunnusten kanssa ja hallita toimitusta + manage_invites: Hallita kutsuja + manage_invites_description: Sallii käyttäjien selata ja poistaa kutsulinkkejä käytöstä + manage_reports: Hallita raportteja + manage_reports_description: Sallii käyttäjien tarkastella raportteja ja suorittaa valvontatoimia niitä vastaan + manage_roles: Hallita rooleja + manage_roles_description: Sallii käyttäjien hallita ja määrittää rooleja heidän alapuolellaan + manage_rules: Hallita sääntöjä + manage_rules_description: Sallii käyttäjien vaihtaa palvelinsääntöjä + manage_settings: Hallita asetuksia + manage_settings_description: Salli käyttäjien muuttaa sivuston asetuksia + manage_taxonomies: Hallita luokittelua + manage_taxonomies_description: Sallii käyttäjien tarkistaa trendillisen sisällön ja päivittää hashtag-asetuksia + manage_user_access: Hallita käyttäjän oikeuksia + manage_user_access_description: Sallii käyttäjien poistaa käytöstä muiden käyttäjien kaksivaiheisen todennuksen, muuttaa heidän sähköpostiosoitettaan ja nollata heidän salasanansa + manage_users: Hallita käyttäjiä + manage_users_description: Sallii käyttäjien tarkastella muiden käyttäjien tietoja ja suorittaa valvontatoimia heitä vastaan + manage_webhooks: Hallita Webhookit + manage_webhooks_description: Sallii käyttäjien luoda webhookit hallinnollisiin tapahtumiin + view_audit_log: Katsoa valvontalokia + view_audit_log_description: Sallii käyttäjien nähdä palvelimen hallinnollisten toimien historian + view_dashboard: Näytä koontinäyttö + view_dashboard_description: Sallii käyttäjien käyttää kojelautaa ja erilaisia mittareita + view_devops: Operaattorit + view_devops_description: Sallii käyttäjille oikeuden käyttää Sidekiq ja pgHero dashboardeja + title: Roolit rules: add_new: Lisää sääntö delete: Poista @@ -744,9 +801,6 @@ fi: desc_html: Näytä julkinen aikajana aloitussivulla title: Aikajanan esikatselu title: Sivuston asetukset - trendable_by_default: - desc_html: Vaikuttaa hashtageihin, joita ei ole aiemmin poistettu käytöstä - title: Salli hashtagit ilman tarkistusta ennakkoon trends: desc_html: Näytä julkisesti aiemmin tarkistetut hashtagit, jotka ovat tällä hetkellä saatavilla title: Trendaavat aihetunnisteet @@ -779,6 +833,11 @@ fi: system_checks: database_schema_check: message_html: Tietokannan siirto on vireillä. Suorita ne varmistaaksesi, että sovellus toimii odotetulla tavalla + elasticsearch_running_check: + message_html: Ei saatu yhteyttä Elasticsearch. Tarkista, että se on käynnissä tai poista kokotekstihaku käytöstä + elasticsearch_version_check: + message_html: 'Yhteensopimaton Elasticsearch versio: %{value}' + version_comparison: Elasticsearch %{running_version} on käynnissä, kun %{required_version} vaaditaan rules_check: action: Hallinnoi palvelimen sääntöjä message_html: Et ole määrittänyt mitään palvelimen sääntöä. @@ -798,8 +857,12 @@ fi: description_html: Nämä ovat linkkejä, joita jaetaan tällä hetkellä paljon tileillä, joilta palvelimesi näkee viestejä. Se voi auttaa käyttäjiäsi saamaan selville, mitä maailmassa tapahtuu. Linkkejä ei näytetä julkisesti, ennen kuin hyväksyt julkaisijan. Voit myös sallia tai hylätä yksittäiset linkit. disallow: Hylkää linkki disallow_provider: Estä julkaisija + shared_by_over_week: + one: Yksi henkilö jakanut viimeisen viikon aikana + other: Jakanut %{count} henkilöä viimeisen viikon aikana title: Suositut linkit usage_comparison: Jaettu %{today} kertaa tänään verrattuna eilen %{yesterday} + only_allowed: Vain sallittu pending_review: Odottaa tarkistusta preview_card_providers: allowed: Tämän julkaisijan linkit voivat trendata @@ -851,6 +914,7 @@ fi: webhooks: add_new: Lisää päätepiste delete: Poista + description_html: A webhook mahdollistaa Mastodonin työntää reaaliaikaisia ilmoituksia valituista tapahtumista omaan sovellukseesi, joten sovelluksesi voi laukaista automaattisesti reaktioita. disable: Poista käytöstä disabled: Ei käytössä edit: Muokkaa päätepistettä @@ -1121,8 +1185,11 @@ fi: edit: add_keyword: Lisää avainsana keywords: Avainsanat + statuses: Yksittäiset postaukset + statuses_hint_html: Tämä suodatin koskee yksittäisten postausten valintaa riippumatta siitä, vastaavatko ne alla olevia avainsanoja. Tarkista tai poista viestit suodattimesta. title: Muokkaa suodatinta errors: + deprecated_api_multiple_keywords: Näitä parametreja ei voi muuttaa tästä sovelluksesta, koska ne koskevat useampaa kuin yhtä suodattimen avainsanaa. Käytä uudempaa sovellusta tai web-käyttöliittymää. invalid_context: Ei sisältöä tai se on virheellinen index: contexts: Suodattimet %{contexts} @@ -1133,10 +1200,23 @@ fi: keywords: one: "%{count} avainsana" other: "%{count} avainsanaa" + statuses: + one: "%{count} viesti" + other: "%{count} viestiä" + statuses_long: + one: "%{count} yksittäinen viesti piilotettu" + other: "%{count} yksittäistä viestiä piilotettu" title: Suodattimet new: save: Tallenna uusi suodatin title: Lisää uusi suodatin + statuses: + back_to_filter: Takaisin suodattimeen + batch: + remove: Poista suodattimista + index: + hint: Tämä suodatin koskee yksittäisten viestien valintaa muista kriteereistä riippumatta. Voit lisätä lisää viestejä tähän suodattimeen web-käyttöliittymästä. + title: Suodatetut viestit footer: developers: Kehittäjille more: Lisää… @@ -1258,17 +1338,6 @@ fi: subject: "%{name} lähetti raportin" sign_up: subject: "%{name} kirjautunut" - digest: - action: Näytä kaikki ilmoitukset - body: Tässä lyhyt yhteenveto viime käyntisi (%{since}) jälkeen tulleista viesteistä - mention: "%{name} mainitsi sinut:" - new_followers_summary: - one: Olet myös saanut yhden uuden seuraajan! Juhuu! - other: Olet myös saanut %{count} uutta seuraajaa! Aivan mahtavaa! - subject: - one: "1 uusi ilmoitus viime käyntisi jälkeen 🐘" - other: "%{count} uutta ilmoitusta viime käyntisi jälkeen 🐘" - title: Poissaollessasi… favourite: body: "%{name} tykkäsi tilastasi:" subject: "%{name} tykkäsi tilastasi" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 018dea3af..a0409693c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -297,7 +297,6 @@ fr: create_unavailable_domain_html: "%{name} a arrêté la livraison vers le domaine %{target}" demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}" destroy_announcement_html: "%{name} a supprimé l'annonce %{target}" - destroy_custom_emoji_html: "%{name} a détruit l'émoji %{target}" destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}" destroy_domain_block_html: "%{name} a débloqué le domaine %{target}" destroy_email_domain_block_html: "%{name} a débloqué le domaine de courriel %{target}" @@ -332,7 +331,6 @@ fr: update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}" update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}" update_status_html: "%{name} a mis à jour le message de %{target}" - deleted_status: "(message supprimé)" empty: Aucun journal trouvé. filter_by_action: Filtrer par action filter_by_user: Filtrer par utilisateur·ice @@ -794,9 +792,6 @@ fr: desc_html: Afficher un lien vers le fil public sur la page d’accueil et autoriser l'accès anonyme au fil public via l'API title: Autoriser la prévisualisation anonyme du fil global title: Paramètres du serveur - trendable_by_default: - desc_html: Affecte les hashtags qui n'ont pas été précédemment non autorisés - title: Autoriser les hashtags à apparaître dans les tendances sans approbation préalable trends: desc_html: Afficher publiquement les hashtags approuvés qui sont populaires en ce moment title: Hashtags populaires @@ -1319,17 +1314,6 @@ fr: subject: "%{name} a soumis un signalement" sign_up: subject: "%{name} s'est inscrit·e" - digest: - action: Voir toutes les notifications - body: Voici un bref résumé des messages que vous avez raté depuis votre dernière visite le %{since} - mention: "%{name} vous a mentionné⋅e dans :" - new_followers_summary: - one: De plus, vous avez un·e nouvel·le abonné·e ! Youpi ! - other: De plus, vous avez %{count} abonné·e·s de plus ! Incroyable ! - subject: - one: "Une nouvelle notification depuis votre dernière visite 🐘" - other: "%{count} nouvelles notifications depuis votre dernière visite 🐘" - title: Pendant votre absence… favourite: body: "%{name} a ajouté votre message à ses favoris :" subject: "%{name} a ajouté votre message à ses favoris" diff --git a/config/locales/fy.yml b/config/locales/fy.yml index fa727d6fe..02f77d7ea 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -37,8 +37,6 @@ fy: contexts: thread: Petearen notification_mailer: - digest: - mention: "%{name} hat jo fermeld yn:" mention: action: Beäntwurdzje body: 'Jo binne fermeld troch %{name} yn:' diff --git a/config/locales/gd.yml b/config/locales/gd.yml index c98235cff..7c8df8f6b 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -307,7 +307,6 @@ gd: create_unavailable_domain_html: Sguir %{name} ris an lìbhrigeadh dhan àrainn %{target} demote_user_html: Dh’ìslich %{name} an cleachdaiche %{target} destroy_announcement_html: Sguab %{name} às am brath-fios %{target} - destroy_custom_emoji_html: Mhill %{name} an Emoji %{target} destroy_domain_allow_html: Dì-cheadaich %{name} co-nasgadh leis an àrainn %{target} destroy_domain_block_html: Dì-bhac %{name} an àrainn %{target} destroy_email_domain_block_html: Dì-bhac %{name} an àrainn puist-d %{target} @@ -342,7 +341,6 @@ gd: update_custom_emoji_html: Dh’ùraich %{name} an Emoji %{target} update_domain_block_html: Dh’ùraich %{name} bacadh na h-àrainne %{target} update_status_html: Dh’ùraich %{name} post le %{target} - deleted_status: "(post air a sguabadh às)" empty: Cha deach loga a lorg. filter_by_action: Criathraich a-rèir gnìomha filter_by_user: Criathraich a-rèir cleachdaiche @@ -826,9 +824,6 @@ gd: desc_html: Seall ceangal dhan loidhne-ama phoblach air an duilleag-landaidh is ceadaich inntrigeadh gun ùghdarrachadh leis an API air an loidhne-ama phoblach title: Ceadaich inntrigeadh gun ùghdarrachadh air an loidhne-ama phoblach title: Roghainnean na làraich - trendable_by_default: - desc_html: Bheir seo buaidh air na tagaichean hais nach deach a dhì-cheadachadh roimhe - title: Leig le tagaichean hais treandadh às aonais lèirmheis ro làimh trends: desc_html: Seall susbaint gu poblach a chaidh lèirmheas a dhèanamh oirre roimhe ’s a tha a’ treandadh title: Treandaichean @@ -1091,7 +1086,7 @@ gd: post_follow: close: Air neo dùin an uinneag seo. return: Seall pròifil a’ chleachdaiche - web: Tadhail air an lìon + web: Tadhail air an duilleag-lìn title: Lean air %{acct} challenge: confirm: Lean air adhart @@ -1365,21 +1360,6 @@ gd: subject: Rinn %{name} gearan sign_up: subject: Chlàraich %{name} - digest: - action: Seall a h-uile brath - body: Seo geàrr-chunntas air na h-atharraichean nach fhaca thu on tadhal mu dheireadh agad %{since} - mention: 'Thug %{name} iomradh ort an-seo:' - new_followers_summary: - few: Cuideachd, bhuannaich thu %{count} luchd-leantainn ùr on àm a bha thu air falbh! Nach ma sin! - one: Cuideachd, bhuannaich thu %{count} neach-leantainn ùr on àm a bha thu air falbh! Nach ma sin! - other: Cuideachd, bhuannaich thu %{count} luchd-leantainn ùr on àm a bha thu air falbh! Nach ma sin! - two: Cuideachd, bhuannaich thu %{count} neach-leantainn ùr on àm a bha thu air falbh! Nach ma sin! - subject: - few: "%{count} brathan ùra on tadhal mu dheireadh agad 🐘" - one: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘" - other: "%{count} brath ùr on tadhal mu dheireadh agad 🐘" - two: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘" - title: Fhad ’s a bha thu air falbh… favourite: body: 'Is annsa le %{name} am post agad:' subject: Is annsa le %{name} am post agad diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 5610272b7..6c32fcaf3 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -235,17 +235,21 @@ gl: approve_user: Aprobar Usuaria assigned_to_self_report: Asignar denuncia change_email_user: Editar email da usuaria + change_role_user: Cambiar Rol da Usuaria confirm_user: Confirmar usuaria create_account_warning: Crear aviso create_announcement: Crear anuncio + create_canonical_email_block: Crear Bloqueo de email create_custom_emoji: Crear emoticonas personalizadas create_domain_allow: Crear Dominio Permitido create_domain_block: Crear bloquedo do Dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regra IP create_unavailable_domain: Crear dominio Non dispoñible + create_user_role: Crear Rol demote_user: Degradar usuaria destroy_announcement: Eliminar anuncio + destroy_canonical_email_block: Eliminar Bloqueo de email destroy_custom_emoji: Eliminar emoticona personalizada destroy_domain_allow: Eliminar Dominio permitido destroy_domain_block: Eliminar bloqueo do Dominio @@ -254,6 +258,7 @@ gl: destroy_ip_block: Eliminar regra IP destroy_status: Eliminar publicación destroy_unavailable_domain: Eliminar dominio Non dispoñible + destroy_user_role: Eliminar Rol disable_2fa_user: Desactivar 2FA disable_custom_emoji: Desactivar emoticona personalizada disable_sign_in_token_auth_user: Desactivar Autenticación por token no email para Usuaria @@ -280,24 +285,30 @@ gl: update_announcement: Actualizar anuncio update_custom_emoji: Actualizar emoticona personalizada update_domain_block: Actualizar bloqueo do dominio + update_ip_block: Actualizar regra IP update_status: Actualizar publicación + update_user_role: Actualizar Rol actions: approve_appeal_html: "%{name} aprobou a apelación da decisión da moderación de %{target}" approve_user_html: "%{name} aprobou o rexistro de %{target}" assigned_to_self_report_html: "%{name} asignou a denuncia %{target} para si mesma" change_email_user_html: "%{name} cambiou o enderezo de email da usuaria %{target}" + change_role_user_html: "%{name} cambiou o rol de %{target}" confirm_user_html: "%{name} confirmou o enderezo de email da usuaria %{target}" create_account_warning_html: "%{name} envioulle unha advertencia a %{target}" create_announcement_html: "%{name} creou un novo anuncio %{target}" + create_canonical_email_block_html: "%{name} bloqueou o email con hash %{target}" create_custom_emoji_html: "%{name} subiu un novo emoji %{target}" create_domain_allow_html: "%{name} permitiu a federación co dominio %{target}" create_domain_block_html: "%{name} bloqueou o dominio %{target}" create_email_domain_block_html: "%{name} bloqueou o dominio de email %{target}" create_ip_block_html: "%{name} creou regra para o IP %{target}" create_unavailable_domain_html: "%{name} deixou de interactuar co dominio %{target}" + create_user_role_html: "%{name} creou o rol %{target}" demote_user_html: "%{name} degradou a usuaria %{target}" destroy_announcement_html: "%{name} eliminou o anuncio %{target}" - destroy_custom_emoji_html: "%{name} destruíu o emoji %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueou o email con hash %{target}" + destroy_custom_emoji_html: "%{name} eliminou o emoji %{target}" destroy_domain_allow_html: "%{name} retirou a federación co dominio %{target}" destroy_domain_block_html: "%{name} desbloqueou o dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueou o dominio de email %{target}" @@ -305,6 +316,7 @@ gl: destroy_ip_block_html: "%{name} eliminou a regra para o IP %{target}" destroy_status_html: "%{name} eliminou a publicación de %{target}" destroy_unavailable_domain_html: "%{name} retomou a interacción co dominio %{target}" + destroy_user_role_html: "%{name} eliminou o rol %{target}" disable_2fa_user_html: "%{name} desactivou o requerimento do segundo factor para a usuaria %{target}" disable_custom_emoji_html: "%{name} desactivou o emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} desactivou a autenticación por token no email para %{target}" @@ -331,8 +343,9 @@ gl: update_announcement_html: "%{name} actualizou o anuncio %{target}" update_custom_emoji_html: "%{name} actualizou o emoji %{target}" update_domain_block_html: "%{name} actualizou o bloqueo do dominio para %{target}" + update_ip_block_html: "%{name} cambiou a regra para IP %{target}" update_status_html: "%{name} actualizou a publicación de %{target}" - deleted_status: "(publicación eliminada)" + update_user_role_html: "%{name} cambiou o rol %{target}" empty: Non se atoparon rexistros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuaria @@ -795,8 +808,8 @@ gl: title: Permitir acceso á cronoloxía pública sen autenticación title: Axustes do sitio trendable_by_default: - desc_html: Afecta ós cancelos que non foron rexeitados de xeito previo - title: Permite ós cancelos ser tendencia sen revisión previa + desc_html: Poderase prohibir igualmente contido en voga específico + title: Permitir tendencias sen aprobación previa trends: desc_html: Amosar de xeito público cancelos revisados previamente que actualmente son tendencia title: Cancelos en tendencia @@ -1182,7 +1195,7 @@ gl: add_keyword: Engadir palabra chave keywords: Palabras chave statuses: Publicacións individuais - statuses_hint_html: Este filtro aplícase para seleccionar publicacións individuais independentemente de se concordan coas palabras chave aquí indicadas. Podes revisar estas publicacións e eliminalas do filtro premendo aquí. + statuses_hint_html: O filtro aplícase para seleccionar publicacións individuais independentemente de se concorda coas palabras chave indicadas. Revisa ou elimina publicacións do filtro. title: Editar filtro errors: deprecated_api_multiple_keywords: Estes parámetros non se poden cambiar desde esta aplicación porque son de aplicación a máis dun filtro de palabras chave. Usa unha aplicación máis recente ou a interface web. @@ -1211,7 +1224,7 @@ gl: batch: remove: Eliminar do filtro index: - hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface Web. + hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface web. title: Publicacións filtradas footer: developers: Desenvolvedoras @@ -1220,12 +1233,22 @@ gl: trending_now: Tendencia agora generic: all: Todo + all_items_on_page_selected_html: + one: "%{count} elemento seleccionado nesta páxina." + other: Tódolos %{count} elementos desta páxina están seleccionados. + all_matching_items_selected_html: + one: "%{count} elemento coincidente coa busca está seleccionado." + other: Tódolos %{count} elementos coincidentes coa busca están seleccionados. changes_saved_msg: Cambios gardados correctamente!! copy: Copiar delete: Eliminar + deselect: Desmarcar todo none: Ningún order_by: Ordenar por save_changes: Gardar cambios + select_all_matching_items: + one: Seleccionar %{count} elemento coincidente coa busca. + other: Seleccionar tódolos %{count} elementos coincidentes coa busca. today: hoxe validation_errors: one: Algo non está ben de todo! Por favor revise abaixo o erro @@ -1334,17 +1357,6 @@ gl: subject: "%{name} enviou unha denuncia" sign_up: subject: "%{name} rexistrouse" - digest: - action: Ver todas as notificacións - body: Aquí ten un breve resumo das mensaxes publicadas desde a súa última visita en %{since} - mention: "%{name} mencionouna en:" - new_followers_summary: - one: Ademáis, ten unha nova seguidora desde entón! Ben! - other: Ademáis, obtivo %{count} novas seguidoras desde entón! Tremendo! - subject: - one: "1 nova notificación desde a última visita 🐘" - other: "%{count} novas notificacións desde a última visita 🐘" - title: Na súa ausencia... favourite: body: 'A túa publicación foi marcada como favorita por %{name}:' subject: "%{name} marcou como favorita a túa publicación" diff --git a/config/locales/he.yml b/config/locales/he.yml index 2106423bc..c340f6e6c 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -245,6 +245,7 @@ he: approve_user: אישור משתמש assigned_to_self_report: הקצאת דו"ח change_email_user: שינוי כתובת דוא"ל למשתמש + change_role_user: שינוי תפקיד למשתמש confirm_user: אשר משתמש create_account_warning: יצירת אזהרה create_announcement: יצירת הכרזה @@ -254,6 +255,7 @@ he: create_email_domain_block: יצירת חסימת דומיין דוא"ל create_ip_block: יצירת כלל IP create_unavailable_domain: יצירת דומיין בלתי זמין + create_user_role: יצירת תפקיד demote_user: הורדת משתמש בדרגה destroy_announcement: מחיקת הכרזה destroy_custom_emoji: מחיקת אמוג'י יחודי @@ -264,6 +266,7 @@ he: destroy_ip_block: מחיקת כלל IP destroy_status: מחיקת פוסט destroy_unavailable_domain: מחיקת דומיין בלתי זמין + destroy_user_role: מחיקת תפקיד disable_2fa_user: השעיית זיהוי דו-גורמי disable_custom_emoji: השעיית אמוג'י מיוחד disable_sign_in_token_auth_user: השעיית אסימון הזדהות בדוא"ל של משתמש @@ -291,11 +294,13 @@ he: update_custom_emoji: עדכון סמלון מותאם אישית update_domain_block: עדכון חסימת שם מתחם update_status: סטטוס עדכון + update_user_role: עדכון תפקיד actions: approve_appeal_html: "%{name} אישר/ה ערעור על החלטת מנהלי הקהילה מ-%{target}" approve_user_html: "%{name} אישר/ה הרשמה מ-%{target}" assigned_to_self_report_html: '%{name} הקצה/תה דו"ח %{target} לעצמם' change_email_user_html: '%{name} שינה/תה את כתובת הדוא"ל של המשתמש %{target}' + change_role_user_html: "%{name} שינה את התפקיד של %{target}" confirm_user_html: '%{name} אישר/ה את כותבת הדו"אל של המשתמש %{target}' create_account_warning_html: "%{name} שלח/ה אזהרה ל %{target}" create_announcement_html: "%{name} יצר/ה הכרזה חדשה %{target}" @@ -305,9 +310,10 @@ he: create_email_domain_block_html: '%{name} חסם/ה את דומיין הדוא"ל %{target}' create_ip_block_html: "%{name} יצר/ה כלל עבור IP %{target}" create_unavailable_domain_html: "%{name} הפסיק/ה משלוח לדומיין %{target}" + create_user_role_html: "%{name} יצר את התפקיד של %{target}" demote_user_html: "%{name} הוריד/ה בדרגה את המשתמש %{target}" destroy_announcement_html: "%{name} מחק/ה את ההכרזה %{target}" - destroy_custom_emoji_html: "%{name} השמיד/ה את האמוג'י %{target}" + destroy_custom_emoji_html: "%{name} מחק אמוג'י של %{target}" destroy_domain_allow_html: "%{name} לא התיר/ה פדרציה עם הדומיין %{target}" destroy_domain_block_html: "%{name} הסיר/ה חסימה מהדומיין %{target}" destroy_email_domain_block_html: '%{name} הסיר/ה חסימה מדומיין הדוא"ל %{target}' @@ -315,6 +321,7 @@ he: destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}" destroy_status_html: "%{name} הסיר/ה פוסט מאת %{target}" destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}" + destroy_user_role_html: "%{name} ביטל את התפקיד של %{target}" disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}" disable_custom_emoji_html: "%{name} השבית/ה את האמוג'י %{target}" disable_sign_in_token_auth_user_html: '%{name} השבית/ה את האימות בעזרת אסימון דוא"ל עבור %{target}' @@ -342,7 +349,7 @@ he: update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}" update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}" update_status_html: "%{name} עדכן/ה פוסט של %{target}" - deleted_status: "(פוסט נמחק)" + update_user_role_html: "%{name} שינה את התפקיד של %{target}" empty: לא נמצאו יומנים. filter_by_action: סינון לפי פעולה filter_by_user: סינון לפי משתמש @@ -826,9 +833,6 @@ he: desc_html: הצגת קישורית לפיד הפומבי מדף הנחיתה והרשאה לממשק לגשת לפיד הפומבי ללא אימות title: הרשאת גישה בלתי מאומתת לפיד הפומבי title: הגדרות אתר - trendable_by_default: - desc_html: משפיע על האשתגיות שלא נאסרו קודם לכן - title: הרשאה להאשתגיות להופיע בנושאים החמים ללא אישור מוקדם trends: desc_html: הצגה פומבית של תוכן שנסקר בעבר ומופיע כרגע בנושאים החמים title: נושאים חמים @@ -1220,6 +1224,7 @@ he: edit: add_keyword: הוספת מילת מפתח keywords: מילות מפתח + statuses: פוסטים יחידים title: ערוך מסנן errors: deprecated_api_multiple_keywords: לא ניתן לשנות פרמטרים אלו מהיישומון הזה בגלל שהם חלים על יותר ממילת מפתח אחת. ניתן להשתמש ביישומון מעודכן יותר או בממשק הוובי. @@ -1239,6 +1244,13 @@ he: new: save: שמירת מסנן חדש title: הוספת מסנן חדש + statuses: + back_to_filter: חזרה לפילטר + batch: + remove: הסרה מפילטר + index: + hint: פילטר זה חל באופן של בחירת פוסטים בודדים ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד פוסטים לפילטר זה ממשק הווב. + title: פוסטים שסוננו footer: developers: מפתחות more: עוד… @@ -1249,6 +1261,7 @@ he: changes_saved_msg: השינויים נשמרו בהצלחה! copy: להעתיק delete: למחוק + deselect: בטל בחירה של הכל none: כלום order_by: מיין לפי save_changes: שמור שינויים @@ -1364,21 +1377,6 @@ he: subject: '%{name} שלח/ה דו"ח' sign_up: subject: "%{name} נרשמו" - digest: - action: הצגת כל ההתראות - body: להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since} - mention: "%{name} פנה אליך ב:" - new_followers_summary: - many: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! - one: חוץ מזה, נוסף לך עוקב חדש בזמן שלא היית! הידד! - other: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! - two: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! - subject: - many: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" - one: "התראה חדשה אחת מאז ביקורך האחרון 🐘" - other: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" - two: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" - title: בהעדרך... favourite: body: 'חצרוצך חובב על ידי %{name}:' subject: חצרוצך חובב על ידי %{name} diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 3a2af1662..6f2d41399 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -71,7 +71,6 @@ hr: moderation: all: Sve action_logs: - deleted_status: "(izbrisani status)" empty: Nema pronađenih izvješća. filter_by_action: Filtriraj prema radnji filter_by_user: Filtriraj prema korisniku @@ -162,9 +161,6 @@ hr: one: 1 korištenje other: "%{count} korištenja" notification_mailer: - digest: - body: Ovo je kratak sažetak propuštenih poruka od Vašeg prošlog posjeta %{since} - mention: "%{name} Vas je spomenuo/la:" favourite: body: "%{name} je označio/la Vaš status favoritom:" subject: "%{name} je označio/la Vaš status favoritom" diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 9a601c4ca..53e514f15 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -237,17 +237,21 @@ hu: approve_user: Felhasználó Jóváhagyása assigned_to_self_report: Jelentés hozzárendelése change_email_user: Felhasználó e-mail címének módosítása + change_role_user: Felhasználó szerepkörének módosítása confirm_user: Felhasználó megerősítése create_account_warning: Figyelmeztetés létrehozása create_announcement: Közlemény létrehozása + create_canonical_email_block: E-mail tiltás létrehozása create_custom_emoji: Egyéni emodzsi létrehozása create_domain_allow: Domain engedélyezés létrehozása create_domain_block: Domain tiltás létrehozása create_email_domain_block: E-mail domain tiltás létrehozása create_ip_block: IP szabály létrehozása create_unavailable_domain: Elérhetetlen domain létrehozása + create_user_role: Szerepkör létrehozása demote_user: Felhasználó lefokozása destroy_announcement: Közlemény törlése + destroy_canonical_email_block: E-mail tiltás törlése destroy_custom_emoji: Egyéni emodzsi törlése destroy_domain_allow: Domain engedélyezés törlése destroy_domain_block: Domain tiltás törlése @@ -256,6 +260,7 @@ hu: destroy_ip_block: IP szabály törlése destroy_status: Bejegyzés törlése destroy_unavailable_domain: Elérhetetlen domain törlése + destroy_user_role: Szerepkör eltávolítása disable_2fa_user: Kétlépcsős hitelesítés letiltása disable_custom_emoji: Egyéni emodzsi letiltása disable_sign_in_token_auth_user: A felhasználó tokenes e-mail hitelesítésének letiltása @@ -282,31 +287,38 @@ hu: update_announcement: Közlemény frissítése update_custom_emoji: Egyéni emodzsi frissítése update_domain_block: Domain tiltás frissítése + update_ip_block: IP-szabály frissítése update_status: Bejegyzés frissítése + update_user_role: Szerepkör frissítése actions: approve_appeal_html: "%{name} jóváhagyott egy fellebbezést %{target} moderátori döntéséről" approve_user_html: "%{name} jóváhagyta %{target} regisztrációját" assigned_to_self_report_html: "%{name} a %{target} bejelentést magához rendelte" change_email_user_html: "%{name} megváltoztatta %{target} felhasználó e-mail címét" + change_role_user_html: "%{name} módosította %{target} szerepkörét" confirm_user_html: "%{name} megerősítette %{target} e-mail-címét" create_account_warning_html: "%{name} figyelmeztetést küldött %{target} számára" create_announcement_html: "%{name} új közleményt hozott létre: %{target}" + create_canonical_email_block_html: "%{name} letiltotta a(z) %{target} hashű e-mailt" create_custom_emoji_html: "%{name} új emodzsit töltött fel: %{target}" create_domain_allow_html: "%{name} engedélyezte a föderációt %{target} domainnel" create_domain_block_html: "%{name} letiltotta a %{target} domaint" create_email_domain_block_html: "%{name} letiltotta a %{target} e-mail domaint" - create_ip_block_html: "%{name} létrehozott egy szabályt a %{target} IP-vel kapcsolatban" + create_ip_block_html: "%{name} létrehozta a(z) %{target} IP-címre vonatkozó szabályt" create_unavailable_domain_html: "%{name} leállította a kézbesítést a %{target} domainbe" + create_user_role_html: "%{name} létrehozta a(z) %{target} szerepkört" demote_user_html: "%{name} lefokozta %{target} felhasználót" destroy_announcement_html: "%{name} törölte a %{target} közleményt" - destroy_custom_emoji_html: "%{name} törölte az emodzsit: %{target}" + destroy_canonical_email_block_html: "%{name} engedélyezte a(z) %{target} hashű e-mailt" + destroy_custom_emoji_html: "%{name} törölte a(z) %{target} emodzsit" destroy_domain_allow_html: "%{name} letiltotta a föderációt a %{target} domainnel" destroy_domain_block_html: "%{name} engedélyezte a %{target} domaint" destroy_email_domain_block_html: "%{name} engedélyezte a %{target} e-mail domaint" destroy_instance_html: "%{name} véglegesen törölte a(z) %{target} domaint" - destroy_ip_block_html: "%{name} törölt egy szabályt a %{target} IP-vel kapcsolatban" + destroy_ip_block_html: "%{name} törölte a(z) %{target} IP-címre vonatkozó szabályt" destroy_status_html: "%{name} eltávolította %{target} felhasználó bejegyzését" destroy_unavailable_domain_html: "%{name} újraindította a kézbesítést a %{target} domainbe" + destroy_user_role_html: "%{name} törölte a(z) %{target} szerepkört" disable_2fa_user_html: "%{name} kikapcsolta a kétlépcsős azonosítást %{target} felhasználó fiókján" disable_custom_emoji_html: "%{name} letiltotta az emodzsit: %{target}" disable_sign_in_token_auth_user_html: "%{name} letiltotta a tokenes e-mail hitelesítést %{target} felhasználóra" @@ -333,8 +345,9 @@ hu: update_announcement_html: "%{name} frissítette a %{target} közleményt" update_custom_emoji_html: "%{name} frissítette az emodzsit: %{target}" update_domain_block_html: "%{name} frissítette a %{target} domain tiltását" + update_ip_block_html: "%{name} módosította a(z) %{target} IP-címre vonatkozó szabályt" update_status_html: "%{name} frissítette %{target} felhasználó bejegyzését" - deleted_status: "(törölt bejegyzés)" + update_user_role_html: "%{name} módosította a(z) %{target} szerepkört" empty: Nem található napló. filter_by_action: Szűrés művelet alapján filter_by_user: Szűrés felhasználó alapján @@ -698,7 +711,7 @@ hu: manage_settings: Beállítások kezelése manage_settings_description: Lehetővé teszi, hogy a felhasználó megváltoztassa az oldal beállításait manage_taxonomies: Taxonómiák kezelése - manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a népszerű tartalmakat és frissítse a hashtag-ek beállításait + manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a népszerű tartalmakat és frissítse a hashtagek beállításait manage_user_access: Felhasználói hozzáférések kezelése manage_user_access_description: Lehetővé teszi, hogy a felhasználó letiltsa mások kétlépcsős azonosítását, megváltoztassa az email címüket, és alaphelyzetbe állítsa a jelszavukat manage_users: Felhasználók kezelése @@ -794,11 +807,11 @@ hu: title: A szerver bélyegképe timeline_preview: desc_html: Nyilvános idővonal megjelenítése a főoldalon - title: Idővonal előnézete + title: A nyilvános idővonal hitelesítés nélküli elérésének engedélyezése title: Webhely beállításai trendable_by_default: - desc_html: Azokra a hashtagekere hat, melyet előzőleg nem tiltottak le - title: Felkapott hashtagek engedélyezése előzetes ellenőrzés nélkül + desc_html: Az egyes felkapott tartalmak továbbra is explicit módon tilthatók + title: Trendek engedélyezése előzetes ellenőrzés nélkül trends: desc_html: Előzetesen engedélyezett és most felkapott hashtagek nyilvános megjelenítése title: Felkapott hashtagek @@ -1183,6 +1196,8 @@ hu: edit: add_keyword: Kulcsszó hozzáadása keywords: Kulcsszavak + statuses: Egyedi bejegyzések + statuses_hint_html: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik, függetlenül attól, hogy megfelelnek-e a lenti kulcsszavaknak. Engedélyezze vagy távolítsa el a bejegyzéseket a szűrőből. title: Szűrő szerkesztése errors: deprecated_api_multiple_keywords: Ezek a paraméterek nem módosíthatóak az alkalmazásból, mert több mint egy szűrőkulcsszóra is hatással vannak. Használd az alkalmazás vagy a webes felület újabb verzióját. @@ -1196,10 +1211,23 @@ hu: keywords: one: "%{count} kulcsszó" other: "%{count} kulcsszó" + statuses: + one: "%{count} bejegyzés" + other: "%{count} bejegyzés" + statuses_long: + one: "%{count} egyedi bejegyzés elrejtve" + other: "%{count} egyedi bejegyzés elrejtve" title: Szűrők new: save: Új szűrő mentése title: Új szűrő hozzáadása + statuses: + back_to_filter: Vissza a szűrőhöz + batch: + remove: Eltávolítás a szűrőből + index: + hint: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik a megadott kritériumoktól függetlenül. Újabb bejegyzéseket adhatsz hozzá ehhez a szűrőhöz a webes felületen keresztül. + title: Megszűrt bejegyzések footer: developers: Fejlesztőknek more: Többet… @@ -1207,12 +1235,22 @@ hu: trending_now: Most felkapott generic: all: Mind + all_items_on_page_selected_html: + one: "%{count} elem kiválasztva ezen az oldalon." + other: Mind a(z) %{count} elem kiválasztva ezen az oldalon. + all_matching_items_selected_html: + one: "%{count}, a keresésnek megfelelő elem kiválasztva." + other: Mind a(z) %{count}, a keresésnek megfelelő elem kiválasztva. changes_saved_msg: A változásokat elmentettük! copy: Másolás delete: Törlés + deselect: Összes kiválasztás megszüntetése none: Nincs order_by: Rendezés save_changes: Változások mentése + select_all_matching_items: + one: "%{count}, a keresésnek megfelelő elem kiválasztása." + other: Mind a(z) %{count}, a keresésnek megfelelő elem kiválasztása. today: ma validation_errors: one: Valami nincs rendjén! Tekintsd meg a hibát lent @@ -1321,17 +1359,6 @@ hu: subject: "%{name} bejelentést küldött" sign_up: subject: "%{name} feliratkozott" - digest: - action: Összes értesítés megtekintése - body: Itt a legutóbbi látogatásod (%{since}) óta írott üzenetek rövid összefoglalása - mention: "%{name} megemlített itt:" - new_followers_summary: - one: Sőt, egy új követőd is lett, amióta nem jártál itt. Hurrá! - other: Sőt, %{count} új követőd is lett, amióta nem jártál itt. Hihetetlen! - subject: - one: "1 új értesítés az utolsó látogatásod óta 🐘" - other: "%{count} új értesítés az utolsó látogatásod óta 🐘" - title: Amíg távol voltál… favourite: body: 'A bejegyzésedet kedvencnek jelölte %{name}:' subject: "%{name} kedvencnek jelölte a bejegyzésedet" diff --git a/config/locales/hy.yml b/config/locales/hy.yml index e04f2088c..61b08d6e0 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -245,7 +245,6 @@ hy: update_custom_emoji: Թարմացնել սեփական էմոջիները update_domain_block: Թարմացնել տիրոյթի արգելափակումը update_status: Թարմացնել գրառումը - deleted_status: "(ջնջուած գրառում)" empty: Ոչ մի գրառում չկայ։ filter_by_action: Զտել ըստ գործողութեան filter_by_user: Զտել ըստ օգտատիրոջ @@ -733,10 +732,6 @@ hy: admin: sign_up: subject: "%{name}-ը գրանցուած է" - digest: - action: Դիտել բոլոր ծանուցումները - mention: "%{name} նշել է քեզ՝" - title: Երբ բացակայ էիր... favourite: body: Քո գրառումը հաւանել է %{name}-ը։ subject: "%{name} հաւանեց գրառումդ" diff --git a/config/locales/id.yml b/config/locales/id.yml index f14f4cf9f..a66b62d52 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -284,7 +284,6 @@ id: create_unavailable_domain_html: "%{name} menghentikan pengiriman ke domain %{target}" demote_user_html: "%{name} menurunkan pengguna %{target}" destroy_announcement_html: "%{name} menghapus pengumuman %{target}" - destroy_custom_emoji_html: "%{name} menghapus emoji %{target}" destroy_domain_allow_html: "%{name} membatalkan izin penggabungan dengan domain %{target}" destroy_domain_block_html: "%{name} membuka blokir domain %{target}" destroy_email_domain_block_html: "%{name} membuka blokir domain email %{target}" @@ -319,7 +318,6 @@ id: update_custom_emoji_html: "%{name} memperbarui emoji %{target}" update_domain_block_html: "%{name} memperbarui blokir domain untuk %{target}" update_status_html: "%{name} memperbarui status %{target}" - deleted_status: "(status dihapus)" empty: Log tidak ditemukan. filter_by_action: Filter berdasarkan tindakan filter_by_user: Filter berdasarkan pengguna @@ -713,9 +711,6 @@ id: desc_html: Tampilkan tautan ke linimasa publik pada halaman landas dan izinkan API mengakses linimasa publik tanpa autentifikasi title: Izinkan akses linimasa publik tanpa autentifikasi title: Pengaturan situs - trendable_by_default: - desc_html: Memengaruhi tagar yang belum pernah diizinkan - title: Izinkan tagar masuk tren tanpa peninjauan trends: desc_html: Tampilkan secara publik tagar tertinjau yang kini sedang tren title: Tagar sedang tren @@ -1216,15 +1211,6 @@ id: admin: sign_up: subject: "%{name} mendaftar" - digest: - action: Lihat semua notifikasi - body: Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since} - mention: "%{name} menyebut anda di:" - new_followers_summary: - other: Anda mendapatkan %{count} pengikut baru! Luar biasa! - subject: - other: "%{count} notifikasi baru sejak kunjungan Anda terakhir 🐘" - title: Saat Anda tidak muncul... favourite: body: 'Status anda disukai oleh %{name}:' subject: "%{name} menyukai status anda" diff --git a/config/locales/io.yml b/config/locales/io.yml index f88ab4164..56258e646 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -235,17 +235,21 @@ io: approve_user: Aprobez uzanto assigned_to_self_report: Taskigez raporto change_email_user: Chanjez retposto por uzanto + change_role_user: Chanjez rolo di uzanto confirm_user: Konfirmez uzanto create_account_warning: Kreez averto create_announcement: Kreez anunco + create_canonical_email_block: Kreez domenobstrukto create_custom_emoji: Kreez kustumizita emocimajo create_domain_allow: Kreez domenpermiso create_domain_block: Kreez domenobstrukto create_email_domain_block: Kreez retpostodomenobstrukto create_ip_block: Kreez IP-regulo create_unavailable_domain: Kreez nedisponebla domeno + create_user_role: Kreez rolo demote_user: Despromocez uzanto destroy_announcement: Efacez anunco + destroy_canonical_email_block: Efacez domenobstrukto destroy_custom_emoji: Efacez kustumizita emocimajo destroy_domain_allow: Efacez domenpermiso destroy_domain_block: Efacez domenobstrukto @@ -254,6 +258,7 @@ io: destroy_ip_block: Efacez IP-regulo destroy_status: Efacez posto destroy_unavailable_domain: Efacez nedisponebla domeno + destroy_user_role: Destruktez rolo disable_2fa_user: Desaktivigez 2FA disable_custom_emoji: Desaktivigez kustumizita emocimajo disable_sign_in_token_auth_user: Desaktivigez retpostofichyurizo por uzanto @@ -280,24 +285,30 @@ io: update_announcement: Novigez anunco update_custom_emoji: Novigez kustumizita emocimajo update_domain_block: Novigez domenobstrukto + update_ip_block: Kreez IP-regulo update_status: Novigez posto + update_user_role: Novigez rolo actions: approve_appeal_html: "%{name} aprobis jerdecidapelo de %{target}" approve_user_html: "%{name} aprobis registro de %{target}" assigned_to_self_report_html: "%{name} taskigis raporto %{target} a su" change_email_user_html: "%{name} chanjis retpostoadreso di uzanto %{target}" + change_role_user_html: "%{name} chanjis rolo di %{target}" confirm_user_html: "%{name} konfirmis retpostoadreso di uzanto %{target}" create_account_warning_html: "%{name} sendis averto a %{target}" create_announcement_html: "%{name} kreis nova anunco %{target}" + create_canonical_email_block_html: "%{name} obstruktis retpostodomeno %{target}" create_custom_emoji_html: "%{name} adchargis nova emocimajo %{target}" create_domain_allow_html: "%{name} permisis federato kun domeno %{target}" create_domain_block_html: "%{name} obstruktis domeno %{target}" create_email_domain_block_html: "%{name} obstruktis retpostodomeno %{target}" create_ip_block_html: "%{name} kreis regulo por IP %{target}" create_unavailable_domain_html: "%{name} cesis sendo a domeno %{target}" + create_user_role_html: "%{name} kreis rolo di %{target}" demote_user_html: "%{name} despromocis uzanto %{target}" destroy_announcement_html: "%{name} efacis anunco %{target}" - destroy_custom_emoji_html: "%{name} destruktis emocimajo %{target}" + destroy_canonical_email_block_html: "%{name} obstruktis retpostodomeno %{target}" + destroy_custom_emoji_html: "%{name} efacis emocimajo %{target}" destroy_domain_allow_html: "%{name} despermisis federato kun domeno %{target}" destroy_domain_block_html: "%{name} deobstruktis domeno %{target}" destroy_email_domain_block_html: "%{name} deobstruktis retpostodomeno %{target}" @@ -305,6 +316,7 @@ io: destroy_ip_block_html: "%{name} efacis regulo por IP %{target}" destroy_status_html: "%{name} efacis posto da %{target}" destroy_unavailable_domain_html: "%{name} durigis sendo a domeno %{target}" + destroy_user_role_html: "%{name} efacis rolo di %{target}" disable_2fa_user_html: "%{name} desaktivigis 2-faktorbezono por uzanto %{target}" disable_custom_emoji_html: "%{name} desaktivigis emocimajo %{target}" disable_sign_in_token_auth_user_html: "%{name} desaktivigis retpostofichyurizo por %{target}" @@ -331,8 +343,9 @@ io: update_announcement_html: "%{name} novigis anunco %{target}" update_custom_emoji_html: "%{name} novigis emocimajo %{target}" update_domain_block_html: "%{name} novigis domenobstrukto por %{target}" + update_ip_block_html: "%{name} kreis regulo por IP %{target}" update_status_html: "%{name} novigis posto da %{target}" - deleted_status: "(efacita posto)" + update_user_role_html: "%{name} chanjis rolo di %{target}" empty: Nula logi. filter_by_action: Filtrez segun ago filter_by_user: Filtrez segun uzanto @@ -795,7 +808,7 @@ io: title: Permisez neyurizita aceso a publika tempolineo title: Site Settings trendable_by_default: - desc_html: Efektigas hashtagi quo ante nepermisesis + desc_html: Partikulara trendoza kontenajo povas ankore videbla nepermisesar title: Permisez hashtagi divenies tendencoza sen bezonata kontrolo trends: desc_html: Publika montrez antee kontrolita kontenajo quo nun esas tendencoza @@ -1181,6 +1194,8 @@ io: edit: add_keyword: Insertez klefvorto keywords: Klefvorti + statuses: Individuala posti + statuses_hint_html: Ca filtrilo aplikesas a selektita posti ne segun kad oli parigesas kun basa klefvorti. Kontrolez o efacez posti de la filtrilo. title: Modifikez filtrilo errors: deprecated_api_multiple_keywords: Ca parametri ne povas chanjesar per ca softwaro pro quo oli efektigas plu kam 1 filtrilklefvorto. Uzez plu recenta softwaro o interretintervizajo. @@ -1194,10 +1209,23 @@ io: keywords: one: "%{count} klefvorto" other: "%{count} klefvorti" + statuses: + one: "%{count} posto" + other: "%{count} posti" + statuses_long: + one: "%{count} posto celesas" + other: "%{count} posti celesas" title: Filtrili new: save: Salvez nova filtrilo title: Insertez nova filtrilo + statuses: + back_to_filter: Retrovenez a filtrilo + batch: + remove: Efacez de filtrilo + index: + hint: Ca filtrilo aplikesas a selektita posti ne segun altra kriterio. Vu povas pozar plu multa posti a ca filtrilo de retintervizajo. + title: Filtrita posti footer: developers: Developeri more: Pluse… @@ -1205,12 +1233,22 @@ io: trending_now: Nuna tendenco generic: all: Omna + all_items_on_page_selected_html: + one: "%{count} kozo sur ca sito selektesas." + other: Omna %{count} kozi sur ca sito selektesas. + all_matching_items_selected_html: + one: "%{count} kozo quo parigesas kun vua trovato selektesas." + other: Omna %{count} kozi quo parigesas kun vua trovato selektesas. changes_saved_msg: Chanji senprobleme konservita! copy: Kopiez delete: Efacez + deselect: Deselektez omno none: Nulo order_by: Asortez quale save_changes: Konservar la chanji + select_all_matching_items: + one: Selektez %{count} kozo quo parigesas kun vua trovato. + other: Selektez omna %{count} kozi quo parigesas kun vua trovato. today: hodie validation_errors: one: Ulo ne eventis senprobleme! Voluntez konsultar la suba eror-raporto @@ -1319,17 +1357,6 @@ io: subject: "%{name} sendis raporto" sign_up: subject: "%{name} registris" - digest: - action: Videz omna avizi - 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! - other: Tu obtenis %{count} nova sequanti! Astonive! - subject: - one: "1 nova avizo de pos vua antea vizito 🐘" - other: "%{count} nova avizi de pos vua antea vizito 🐘" - title: Dum vua neprezenteso... favourite: body: "%{name} favoris tua mesajo:" subject: "%{name} favoris tua mesajo" diff --git a/config/locales/is.yml b/config/locales/is.yml index db856011b..841645c91 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -235,17 +235,21 @@ is: approve_user: Samþykkja notanda assigned_to_self_report: Úthluta kæru change_email_user: Skipta um tölvupóstfang notanda + change_role_user: Breyta hlutverki notanda confirm_user: Staðfesta notanda create_account_warning: Útbúa aðvörun create_announcement: Búa til tilkynningu + create_canonical_email_block: Búa til útilokunarblokk tölvupósts create_custom_emoji: Búa til sérsniðið tjáningartákn create_domain_allow: Búa til lén leyft create_domain_block: Búa til útilokun léns create_email_domain_block: Búa til útilokun tölvupóstléns create_ip_block: Búa til IP-reglu create_unavailable_domain: Útbúa lén sem ekki er tiltækt + create_user_role: Útbúa hlutverk demote_user: Lækka notanda í tign destroy_announcement: Eyða tilkynningu + destroy_canonical_email_block: Eyða útilokunarblokk tölvupósts destroy_custom_emoji: Eyða sérsniðnu tjáningartákni destroy_domain_allow: Eyða léni leyft destroy_domain_block: Eyða útilokun léns @@ -254,6 +258,7 @@ is: destroy_ip_block: Eyða IP-reglu destroy_status: Eyða færslu destroy_unavailable_domain: Eyða léni sem ekki er tiltækt + destroy_user_role: Eyða hlutverki disable_2fa_user: Gera tveggja-þátta auðkenningu óvirka disable_custom_emoji: Gera sérsniðið tjáningartákn óvirkt disable_sign_in_token_auth_user: Gera óvirka auðkenningu með teikni í tölvupósti fyrir notandann @@ -280,24 +285,30 @@ is: update_announcement: Uppfæra tilkynningu update_custom_emoji: Uppfæra sérsniðið tjáningartákn update_domain_block: Uppfæra útilokun léns + update_ip_block: Uppfæra reglu IP-vistfangs update_status: Uppfæra færslu + update_user_role: Uppfæra hlutverk actions: approve_appeal_html: "%{name} samþykkti áfrýjun á ákvörðun umsjónarmanns frá %{target}" approve_user_html: "%{name} samþykkti nýskráningu frá %{target}" assigned_to_self_report_html: "%{name} úthlutaði kæru %{target} til sín" change_email_user_html: "%{name} breytti tölvupóstfangi fyrir notandann %{target}" + change_role_user_html: "%{name} breytti hlutverki %{target}" confirm_user_html: "%{name} staðfesti tölvupóstfang fyrir notandann %{target}" create_account_warning_html: "%{name} sendi aðvörun til %{target}" create_announcement_html: "%{name} útbjó nýja tilkynningu %{target}" + create_canonical_email_block_html: "%{name} útilokaði tölvupóst með tætigildið %{target}" create_custom_emoji_html: "%{name} sendi inn nýtt tjáningartákn %{target}" create_domain_allow_html: "%{name} leyfði skýjasamband með léninu %{target}" create_domain_block_html: "%{name} útilokaði lénið %{target}" create_email_domain_block_html: "%{name} útilokaði póstlénið %{target}" create_ip_block_html: "%{name} útbjó reglu fyrir IP-vistfangið %{target}" create_unavailable_domain_html: "%{name} stöðvaði afhendingu til lénsins %{target}" + create_user_role_html: "%{name} útbjó %{target} hlutverk" demote_user_html: "%{name} lækkaði notandann %{target} í tign" destroy_announcement_html: "%{name} eyddi tilkynninguni %{target}" - destroy_custom_emoji_html: "%{name} henti út tjáningartákninu %{target}" + destroy_canonical_email_block_html: "%{name} tók af útilokun á tölvupósti með tætigildið %{target}" + destroy_custom_emoji_html: "%{name} eyddi emoji-tákni %{target}" destroy_domain_allow_html: "%{name} bannaði skýjasamband með léninu %{target}" destroy_domain_block_html: "%{name} aflétti útilokun af léninu %{target}" destroy_email_domain_block_html: "%{name} aflétti útilokun af póstléninu %{target}" @@ -305,6 +316,7 @@ is: destroy_ip_block_html: "%{name} eyddi reglu fyrir IP-vistfangið %{target}" destroy_status_html: "%{name} fjarlægði færslu frá %{target}" destroy_unavailable_domain_html: "%{name} hóf aftur afhendingu til lénsins %{target}" + destroy_user_role_html: "%{name} eyddi hlutverki %{target}" disable_2fa_user_html: "%{name} gerði kröfu um tveggja-þátta innskráningu óvirka fyrir notandann %{target}" disable_custom_emoji_html: "%{name} gerði tjáningartáknið %{target} óvirkt" disable_sign_in_token_auth_user_html: "%{name} gerði óvirka auðkenningu með teikni í tölvupósti fyrir %{target}" @@ -331,8 +343,9 @@ is: update_announcement_html: "%{name} uppfærði tilkynningu %{target}" update_custom_emoji_html: "%{name} uppfærði tjáningartáknið %{target}" update_domain_block_html: "%{name} uppfærði útilokun lénsins %{target}" + update_ip_block_html: "%{name} breytti reglu fyrir IP-vistfangið %{target}" update_status_html: "%{name} uppfærði færslu frá %{target}" - deleted_status: "(eydd færsla)" + update_user_role_html: "%{name} breytti hlutverki %{target}" empty: Engar atvikaskrár fundust. filter_by_action: Sía eftir aðgerð filter_by_user: Sía eftir notanda @@ -795,11 +808,11 @@ is: title: Leyfa óauðkenndan aðgang að opinberri tímalínu title: Stillingar vefsvæðis trendable_by_default: - desc_html: Hefur áhrif á myllumerki sem ekki hafa áður verið gerð óleyfileg - title: Leyfa myllumerkjum að fara í umræðuna án þess að þau séu fyrst yfirfarin + desc_html: Sérstakt vinsælt efni er eftir sem áður hægt að banna sérstaklega + title: Leyfa vinsælt efni án undanfarandi yfirferðar trends: desc_html: Birta opinberlega þau áður yfirförnu myllumerki sem eru núna í umræðunni - title: Myllumerki í umræðunni + title: Vinsælt site_uploads: delete: Eyða innsendri skrá destroyed_msg: Það tókst að eyða innsendingu á vefsvæði! @@ -1182,7 +1195,7 @@ is: add_keyword: Bæta við stikkorði keywords: Stikkorð statuses: Einstakar færslur - statuses_hint_html: Þessi sía virkar til að velja stakar færslur burtséð frá því hvort þær samsvari stikkorðunum hér fyrir neðan. Þú getur yfirfarið þessar færslur og fjarlægt þær úr síunni með því að smella hér. + statuses_hint_html: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Yfirfarðu eða fjarlægðu færslur úr síunni. title: Breyta síu errors: deprecated_api_multiple_keywords: Þessum viðföngum er ekki hægt að breyta úr þessu forriti, þar sem þau eiga við fleiri en eitt stikkorð síu. Notaðu nýrra forrit eða farðu í vefviðmótið. @@ -1220,12 +1233,22 @@ is: trending_now: Í umræðunni núna generic: all: Allt + all_items_on_page_selected_html: + one: "%{count} atriði á þessari síðu er valið." + other: Öll %{count} atriðin á þessari síðu eru valin. + all_matching_items_selected_html: + one: "%{count} atriði sem samsvarar leitinni þinni er valið." + other: Öll %{count} atriðin sem samsvara leitinni þinni eru valin. changes_saved_msg: Það tókst að vista breytingarnar! copy: Afrita delete: Eyða + deselect: Afvelja allt none: Ekkert order_by: Raða eftir save_changes: Vista breytingar + select_all_matching_items: + one: Veldu %{count} atriði sem samsvarar leitinni þinni. + other: Veldu öll %{count} atriðin sem samsvara leitinni þinni. today: í dag validation_errors: one: Ennþá er ekk alvegi allt í lagi! Skoðaðu vel villuna hér fyrir neðan @@ -1334,17 +1357,6 @@ is: subject: "%{name} sendi inn kæru" sign_up: subject: "%{name} nýskráði sig" - digest: - action: Skoða allar tilkynningar - body: Hér er stutt yfirlit yfir þau skilaboð sem þú gætir hafa misst af síðan þú leist inn síðast %{since} - mention: "%{name} minntist á þig í:" - new_followers_summary: - one: Að auki, þú hefur fengið einn nýjan fylgjanda á meðan þú varst fjarverandi! Húh! - other: Að auki, þú hefur fengið %{count} nýja fylgjendur á meðan þú varst fjarverandi! Frábært! - subject: - one: "1 ný tilkynning síðan þú leist inn síðast 🐘" - other: "%{count} nýjar tilkynningar síðan þú leist inn síðast 🐘" - title: Á meðan þú varst fjarverandi... favourite: body: 'Færslan þín var sett í eftirlæti af %{name}:' subject: "%{name} setti færsluna þína í eftirlæti" diff --git a/config/locales/it.yml b/config/locales/it.yml index f269cc542..ff3120f34 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -235,17 +235,21 @@ it: approve_user: Approva Utente assigned_to_self_report: Assegna report change_email_user: Cambia l'e-mail per l'utente + change_role_user: Cambia il Ruolo dell'Utente confirm_user: Conferma utente create_account_warning: Crea avviso create_announcement: Crea un annuncio + create_canonical_email_block: Crea Blocco E-mail create_custom_emoji: Crea emoji personalizzata create_domain_allow: Crea permesso di dominio create_domain_block: Crea blocco di dominio create_email_domain_block: Crea blocco dominio e-mail create_ip_block: Crea regola IP create_unavailable_domain: Crea dominio non disponibile + create_user_role: Crea Ruolo demote_user: Degrada l'utente destroy_announcement: Cancella annuncio + destroy_canonical_email_block: Elimina Blocco E-mail destroy_custom_emoji: Cancella emoji personalizzata destroy_domain_allow: Cancella permesso di dominio destroy_domain_block: Cancella blocco di dominio @@ -254,6 +258,7 @@ it: destroy_ip_block: Elimina regola IP destroy_status: Cancella stato destroy_unavailable_domain: Elimina dominio non disponibile + destroy_user_role: Distruggi Ruolo disable_2fa_user: Disabilita l'autenticazione a due fattori disable_custom_emoji: Disabilita emoji personalizzata disable_sign_in_token_auth_user: Disabilita autenticazione con codice via email per l'utente @@ -280,24 +285,30 @@ it: update_announcement: Aggiorna annuncio update_custom_emoji: Aggiorna emoji personalizzata update_domain_block: Aggiorna blocco di dominio + update_ip_block: Aggiorna regola IP update_status: Aggiorna stato + update_user_role: Aggiorna Ruolo actions: approve_appeal_html: "%{name} ha approvato il ricorso contro la decisione di moderazione da %{target}" approve_user_html: "%{name} ha approvato la registrazione da %{target}" assigned_to_self_report_html: "%{name} ha assegnato il rapporto %{target} a se stesso" change_email_user_html: "%{name} ha cambiato l'indirizzo e-mail dell'utente %{target}" + change_role_user_html: "%{name} ha cambiato il ruolo di %{target}" confirm_user_html: "%{name} ha confermato l'indirizzo e-mail dell'utente %{target}" create_account_warning_html: "%{name} ha inviato un avviso a %{target}" create_announcement_html: "%{name} ha creato un nuovo annuncio %{target}" + create_canonical_email_block_html: "%{name} ha bloccato l'e-mail con l'hash %{target}" create_custom_emoji_html: "%{name} ha caricato una nuova emoji %{target}" create_domain_allow_html: "%{name} ha consentito alla federazione col dominio %{target}" create_domain_block_html: "%{name} ha bloccato dominio %{target}" create_email_domain_block_html: "%{name} ha bloccato dominio e-mail %{target}" create_ip_block_html: "%{name} ha creato una regola per l'IP %{target}" create_unavailable_domain_html: "%{name} ha interrotto la consegna al dominio %{target}" + create_user_role_html: "%{name} ha creato il ruolo %{target}" demote_user_html: "%{name} ha retrocesso l'utente %{target}" destroy_announcement_html: "%{name} ha eliminato l'annuncio %{target}" - destroy_custom_emoji_html: "%{name} ha eliminato emoji %{target}" + destroy_canonical_email_block_html: "%{name} ha sbloccato l'email con l'hash %{target}" + destroy_custom_emoji_html: "%{name} ha eliminato l'emoji %{target}" destroy_domain_allow_html: "%{name} ha negato la federazione al dominio %{target}" destroy_domain_block_html: "%{name} ha sbloccato dominio %{target}" destroy_email_domain_block_html: "%{name} ha sbloccato il dominio e-mail %{target}" @@ -305,6 +316,7 @@ it: destroy_ip_block_html: "%{name} ha eliminato la regola per l'IP %{target}" destroy_status_html: "%{name} ha eliminato lo status di %{target}" destroy_unavailable_domain_html: "%{name} ha ripreso la consegna al dominio %{target}" + destroy_user_role_html: "%{name} ha eliminato il ruolo %{target}" disable_2fa_user_html: "%{name} ha disabilitato l'autenticazione a due fattori per l'utente %{target}" disable_custom_emoji_html: "%{name} ha disabilitato emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} ha disabilitato l'autenticazione con codice via email per %{target}" @@ -331,8 +343,9 @@ it: update_announcement_html: "%{name} ha aggiornato l'annuncio %{target}" update_custom_emoji_html: "%{name} ha aggiornato emoji %{target}" update_domain_block_html: "%{name} ha aggiornato il blocco dominio per %{target}" + update_ip_block_html: "%{name} ha cambiato la regola per l'IP %{target}" update_status_html: "%{name} ha aggiornato lo status di %{target}" - deleted_status: "(stato cancellato)" + update_user_role_html: "%{name} ha modificato il ruolo %{target}" empty: Nessun log trovato. filter_by_action: Filtra per azione filter_by_user: Filtra per utente @@ -795,8 +808,8 @@ it: title: Anteprima timeline title: Impostazioni sito trendable_by_default: - desc_html: Interessa gli hashtag che non sono stati precedentemente disattivati - title: Permetti agli hashtag di comparire nei trend senza prima controllarli + desc_html: I contenuti di tendenza specifici possono ancora essere esplicitamente vietati + title: Consenti tendenze senza controllo preliminare trends: desc_html: Visualizza pubblicamente gli hashtag precedentemente esaminati che sono attualmente in tendenza title: Hashtag di tendenza @@ -1183,6 +1196,8 @@ it: edit: add_keyword: Aggiungi parola chiave keywords: Parole chiave + statuses: Post singoli + statuses_hint_html: Questo filtro si applica a singoli post indipendentemente dal fatto che corrispondano alle parole chiave qui sotto. Rivedi o rimuovi i post dal filtro. title: Modifica filtro errors: deprecated_api_multiple_keywords: Questi parametri non possono essere modificati da questa applicazione perché si applicano a più di una parola chiave che fa da filtro. Utilizzare un'applicazione più recente o l'interfaccia web. @@ -1196,10 +1211,23 @@ it: keywords: one: "%{count} parola chiave" other: "%{count} parole chiave" + statuses: + one: "%{count} post" + other: "%{count} post" + statuses_long: + one: "%{count} singolo post nascosto" + other: "%{count} singoli post nascosti" title: Filtri new: save: Salva nuovo filtro title: Aggiungi filtro + statuses: + back_to_filter: Torna al filtro + batch: + remove: Togli dal filtro + index: + hint: Questo filtro si applica a singoli post indipendentemente da altri criteri. Puoi aggiungere più post a questo filtro dall'interfaccia Web. + title: Post filtrati footer: developers: Sviluppatori more: Altro… @@ -1207,12 +1235,22 @@ it: trending_now: Di tendenza ora generic: all: Tutto + all_items_on_page_selected_html: + one: "%{count} elemento su questa pagina è selezionato." + other: Tutti i %{count} elementi su questa pagina sono selezionati. + all_matching_items_selected_html: + one: "%{count} elemento corrispondente alla tua ricerca è selezionato." + other: Tutti i %{count} elementi corrispondenti alla tua ricerca sono selezionati. changes_saved_msg: Modifiche effettuate con successo! copy: Copia delete: Cancella + deselect: Deseleziona tutto none: Nessuno order_by: Ordina per save_changes: Salva modifiche + select_all_matching_items: + one: Seleziona %{count} elemento corrispondente alla tua ricerca. + other: Seleziona tutti gli elementi %{count} corrispondenti alla tua ricerca. today: oggi validation_errors: one: Qualcosa ancora non va bene! Per favore, controlla l'errore qui sotto @@ -1321,17 +1359,6 @@ it: subject: "%{name} ha inviato una segnalazione" sign_up: subject: "%{name} si è iscritto" - digest: - action: Vedi tutte le notifiche - body: Ecco un breve riassunto di quello che ti sei perso dalla tua ultima visita del %{since} - mention: "%{name} ti ha menzionato:" - new_followers_summary: - one: E inoltre hai ricevuto un nuovo seguace mentre eri assente! Urrà! - other: Inoltre, hai acquisito %{count} nuovi seguaci mentre eri assente! Incredibile! - subject: - one: "1 nuova notifica dalla tua ultima visita 🐘" - other: "%{count} nuove notifiche dalla tua ultima visita 🐘" - title: In tua assenza… favourite: body: 'Il tuo status è stato apprezzato da %{name}:' subject: "%{name} ha apprezzato il tuo status" diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 5dccf1a43..133835b58 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -284,7 +284,6 @@ ja: create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました" demote_user_html: "%{name}さんが%{target}さんを降格しました" destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました" - destroy_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を削除しました" destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" destroy_email_domain_block_html: "%{name}さんが%{target}をメールドメインブロックから外しました" @@ -319,7 +318,6 @@ ja: update_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を更新しました" update_domain_block_html: "%{name}さんが%{target}のドメインブロックを更新しました" update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" - deleted_status: "(削除済)" empty: ログが見つかりませんでした filter_by_action: アクションでフィルター filter_by_user: ユーザーでフィルター @@ -761,9 +759,6 @@ ja: desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへのAPIアクセスを許可します title: 公開タイムラインへの未認証のアクセスを許可する title: サイト設定 - trendable_by_default: - desc_html: 表示を拒否していないハッシュタグに影響します - title: 審査前のハッシュタグのトレンドへの表示を許可する trends: desc_html: 現在トレンドになっている承認済みのハッシュタグを公開します title: トレンドタグを有効にする @@ -1264,15 +1259,6 @@ ja: subject: "%{name} がレポートを送信しました" sign_up: subject: "%{name}さんがサインアップしました" - digest: - action: 全ての通知を表示 - body: '最後のログイン(%{since})からの出来事:' - mention: "%{name}さんがあなたに返信しました:" - new_followers_summary: - other: また、離れている間に%{count}人の新たなフォロワーを獲得しました! - subject: - other: "前回の訪問から%{count}件の新しい通知 🐘" - title: 不在の間に… favourite: body: "%{name}さんにお気に入り登録された、あなたの投稿があります:" subject: "%{name}さんにお気に入りに登録されました" diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 9948ae493..288e50edd 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -115,7 +115,6 @@ ka: username: მომხმარებლის სახელი web: ვები action_logs: - deleted_status: "(გაუქმებული სტატუსი)" title: აუდიტის ლოგი custom_emojis: by_domain: დომენი @@ -438,14 +437,6 @@ ka: moderation: title: მოდერაცია notification_mailer: - digest: - action: ყველა შეტყობინების ჩვენება - body: 'აქ მოკლე შინაარსია წერილების, რომლებიც გამოგეპარათ წინა სტუმრობის შემდეგ: %{since}' - mention: "%{name}-მა დაგასახელათ:" - new_followers_summary: - one: ასევე, არყოფნისას შეგეძინათ ერთი ახალი მიმდევარი! იეი! - other: ასევე, არყოფნისას შეგეძინათ %{count} ახალი მიმდევარი! შესანიშნავია! - title: თქვენს არყოფნაში... favourite: body: 'თქვენი სტატუსი ფავორიტი გახადა %{name}-მა:' subject: "%{name}-მა თქვენი სტატუსი გახადა ფავორიტი" diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 4fac9a796..8096b95f4 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -223,7 +223,6 @@ kab: create_unavailable_domain_html: "%{name} iseḥbes asiweḍ ɣer taɣult %{target}" demote_user_html: "%{name} iṣubb-d deg usellun aseqdac %{target}" destroy_announcement_html: "%{name} yekkes taselɣut %{target}" - destroy_custom_emoji_html: "%{name} ihudd imuji %{target}" destroy_domain_allow_html: "%{name} yekkes taɣult %{target} seg tebdart tamellalt" destroy_domain_block_html: "%{name} yekkes aseḥbes n taɣult %{target}" destroy_email_domain_block_html: "%{name} yekkes asewḥel i taɣult n imayl %{target}" @@ -247,7 +246,6 @@ kab: update_custom_emoji_html: "%{name} ileqqem imuji %{target}" update_domain_block_html: "%{name} ileqqem iḥder n taɣult i %{target}" update_status_html: "%{name} ileqqem tasufeɣt n %{target}" - deleted_status: "(tasuffeɣt tettwakkes)" empty: Ulac iɣmisen i yellan. filter_by_action: Fren s tigawt filter_by_user: Sizdeg s useqdac @@ -632,9 +630,6 @@ kab: incoming_migrations: Tusiḍ-d seg umiḍan nniḍen proceed_with_move: Awid imeḍfaṛen-ik notification_mailer: - digest: - action: Wali akk tilγa - mention: 'Yuder-ik-id %{name} deg:' favourite: subject: "%{name} yesmenyaf addad-ik·im" follow: diff --git a/config/locales/kk.yml b/config/locales/kk.yml index b12f79163..b1c92f7eb 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -175,7 +175,6 @@ kk: web: Веб whitelisted: Рұқсат тізімі action_logs: - deleted_status: "(өшірілген жазба)" title: Аудит логы announcements: destroyed_msg: Анонс сәтті өшірілді! @@ -405,9 +404,6 @@ kk: desc_html: Display public timeline on лендинг пейдж title: Таймлайн превьюі title: Сайт баптаулары - trendable_by_default: - desc_html: Бұрын тыйым салынбаған хэштегтерге әсер етеді - title: Хэштегтерге алдын-ала шолусыз тренд беруге рұқсат етіңіз trends: desc_html: Бұрын қарастырылған хэштегтерді қазіргі уақытта трендте көпшілікке көрсету title: Тренд хештегтер @@ -685,14 +681,6 @@ kk: moderation: title: Модерация notification_mailer: - digest: - action: Барлық ескертпелер - body: Міне, соңғы кірген уақыттан кейін келген хаттардың қысқаша мазмұны %{since} - mention: "%{name} сізді атап өтіпті:" - new_followers_summary: - one: Сондай-ақ, сіз бір жаңа оқырман таптыңыз! Алақай! - other: Сондай-ақ, сіз %{count} жаңа оқырман таптыңыз! Керемет! - title: Сіз жоқ кезде... favourite: body: 'Жазбаңызды ұнатып, таңдаулыға қосты %{name}:' subject: "%{name} жазбаңызды таңдаулыға қосты" diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 4788365c2..102d85393 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -230,17 +230,21 @@ ko: approve_user: 사용자 승인 assigned_to_self_report: 신고 맡기 change_email_user: 사용자의 이메일 변경 + change_role_user: 사용자 역할 변경 confirm_user: 사용자 확인 create_account_warning: 경고 생성 create_announcement: 공지사항 생성 + create_canonical_email_block: 이메일 차단 생성 create_custom_emoji: 커스텀 에모지 생성 create_domain_allow: 도메인 허용 생성 create_domain_block: 도메인 차단 추가 create_email_domain_block: 이메일 도메인 차단 생성 create_ip_block: IP 규칙 만들기 create_unavailable_domain: 사용 불가능한 도메인 생성 + create_user_role: 역할 생성 demote_user: 사용자 강등 destroy_announcement: 공지사항 삭제 + destroy_canonical_email_block: 이메일 차단 삭제 destroy_custom_emoji: 커스텀 에모지 삭제 destroy_domain_allow: 도메인 허용 삭제 destroy_domain_block: 도메인 차단 삭제 @@ -249,6 +253,7 @@ ko: destroy_ip_block: IP 규칙 삭제 destroy_status: 게시물 삭제 destroy_unavailable_domain: 사용 불가능한 도메인 제거 + destroy_user_role: 역할 삭제 disable_2fa_user: 2단계 인증 비활성화 disable_custom_emoji: 커스텀 에모지 비활성화 disable_sign_in_token_auth_user: 사용자에 대한 이메일 토큰 인증 비활성화 @@ -275,24 +280,30 @@ ko: update_announcement: 공지사항 업데이트 update_custom_emoji: 커스텀 에모지 업데이트 update_domain_block: 도메인 차단 갱신 + update_ip_block: IP 규칙 수정 update_status: 게시물 게시 + update_user_role: 역할 수정 actions: approve_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의제기를 승인했습니다" approve_user_html: "%{name} 님이 %{target}의 가입을 승인했습니다" assigned_to_self_report_html: "%{name} 님이 신고 %{target}을 자신에게 할당했습니다" change_email_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 변경했습니다" + change_role_user_html: "%{name} 님이 %{target} 님의 역할을 수정했습니다" confirm_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 승인했습니다" create_account_warning_html: "%{name} 님이 %{target}에게 경고를 보냈습니다" create_announcement_html: "%{name} 님이 새 공지 %{target}을 만들었습니다" + create_canonical_email_block_html: "%{name} 님이 %{target} 해시를 가진 이메일을 차단했습니다" create_custom_emoji_html: "%{name} 님이 새로운 에모지 %{target}를 업로드 했습니다" create_domain_allow_html: "%{name} 님이 %{target} 도메인을 허용리스트에 넣었습니다" create_domain_block_html: "%{name} 님이 도메인 %{target}를 차단했습니다" create_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}를 차단했습니다" create_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 만들었습니다" create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지했습니다" + create_user_role_html: "%{name} 님이 %{target} 역할을 생성했습니다" demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다" destroy_announcement_html: "%{name} 님이 공지 %{target}을 삭제했습니다" - destroy_custom_emoji_html: "%{name} 님이 %{target} 에모지를 삭제했습니다" + destroy_canonical_email_block_html: "%{name} 님이 %{target} 해시를 가진 이메일을 차단 해제했습니다" + destroy_custom_emoji_html: "%{name} 님이 에모지 %{target}를 삭제했습니다" destroy_domain_allow_html: "%{name} 님이 %{target} 도메인과의 연합을 금지했습니다" destroy_domain_block_html: "%{name} 님이 도메인 %{target}의 차단을 해제했습니다" destroy_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}을 차단 해제하였습니다" @@ -300,6 +311,7 @@ ko: destroy_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 삭제하였습니다" destroy_status_html: "%{name} 님이 %{target}의 게시물을 삭제했습니다" destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개" + destroy_user_role_html: "%{name} 님이 %{target} 역할을 삭제했습니다" disable_2fa_user_html: "%{name} 님이 사용자 %{target}의 2FA를 비활성화 했습니다" disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화 했습니다" disable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 비활성화 했습니다" @@ -326,8 +338,9 @@ ko: update_announcement_html: "%{name} 님이 공지사항 %{target}을 갱신했습니다" update_custom_emoji_html: "%{name} 님이 에모지 %{target}를 업데이트 했습니다" update_domain_block_html: "%{name} 님이 %{target}에 대한 도메인 차단을 갱신했습니다" + update_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 수정했습니다" update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트 했습니다" - deleted_status: "(삭제된 게시물)" + update_user_role_html: "%{name} 님이 %{target} 역할을 수정했습니다" empty: 로그를 찾을 수 없습니다 filter_by_action: 행동으로 거르기 filter_by_user: 사용자로 거르기 @@ -781,8 +794,8 @@ ko: title: 타임라인 프리뷰 title: 사이트 설정 trendable_by_default: - desc_html: 이전에 거부되지 않은 해시태그들에 영향을 미칩니다 - title: 해시태그가 사전 리뷰 없이 트렌드에 올라갈 수 있도록 허용 + desc_html: 특정 트렌드를 허용시키지 않는 것은 여전히 가능합니다 + title: 사전 리뷰 없이 트렌드에 오르는 것을 허용 trends: desc_html: 리뷰를 거친 해시태그를 유행하는 해시태그에 공개적으로 보여줍니다 title: 유행하는 해시태그 @@ -1164,7 +1177,7 @@ ko: add_keyword: 키워드 추가 keywords: 키워드 statuses: 개별 게시물 - statuses_hint_html: 이 필터는 아래 키워드들의 매치 여부와는 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 다음 게시물들을 검토하고 여기를 클릭해 필터에서 제거할 수 있습니다. + statuses_hint_html: 이 필터는 아래의 키워드에 매칭되는지 여부와 관계 없이 몇몇개의 게시물들에 별개로 적용되었습니다. 검토하거나 필터에서 삭제하세요 title: 필터 편집 errors: deprecated_api_multiple_keywords: 이 파라미터들은 하나를 초과하는 필터 키워드에 적용되기 때문에 이 응용프로그램에서 수정될 수 없습니다. 더 최신의 응용프로그램이나 웹 인터페이스를 사용하세요. @@ -1199,12 +1212,19 @@ ko: trending_now: 지금 유행중 generic: all: 모두 + all_items_on_page_selected_html: + other: 현재 페이지에서 %{count} 개의 항목이 선택되었습니다 + all_matching_items_selected_html: + other: 검색에 잡히는 %{count} 개의 항목이 선택되었습니다 changes_saved_msg: 정상적으로 변경되었습니다! copy: 복사 delete: 삭제 + deselect: 전체 선택 해제 none: 없음 order_by: 순서 save_changes: 변경 사항을 저장 + select_all_matching_items: + other: 검색에 잡힌 %{count} 개의 항목을 모두 선택하기 today: 오늘 validation_errors: other: 오류가 발생했습니다. 아래 %{count}개 오류를 확인해 주십시오 @@ -1311,15 +1331,6 @@ ko: subject: "%{name} 님이 신고를 제출했습니다" sign_up: subject: "%{name} 님이 가입했습니다" - digest: - action: 모든 알림 보기 - body: 마지막 로그인(%{since}) 이후로 일어난 일들에 관한 요약 - mention: "%{name} 님이 나를 언급했습니다:" - new_followers_summary: - other: 게다가, 접속하지 않은 동안 %{count} 명의 팔로워가 생겼습니다! - subject: - other: 마지막 방문 이후로 %{count} 건의 새로운 알림 - title: 당신이 없는 동안에... favourite: body: '당신의 게시물을 %{name} 님이 마음에 들어했습니다:' subject: "%{name} 님이 내 게시물을 마음에 들어했습니다" diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 497876c6c..b43e205d2 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -235,17 +235,21 @@ ku: approve_user: Bikarhêner bipejirîne assigned_to_self_report: Ragihandinê diyar bike change_email_user: E-nameya bikarhêner biguherîne + change_role_user: Rola bikarhêner biguherîne confirm_user: Bikarhêner bipejirîne create_account_warning: Hişyariyekê çê bike create_announcement: Daxûyaniyekê çê bike + create_canonical_email_block: Astengkirina e-nameyê biafirîne create_custom_emoji: Emojiyên kesanekirî çê bike create_domain_allow: Navpera ku destûr standiye peyda bike create_domain_block: Navpera ku asteng bûye ava bike create_email_domain_block: Navpera e-name yê de asteng kirinê peyda bike create_ip_block: Rêziknameya IPyê saz bike create_unavailable_domain: Navpera ku nayê bikaranîn pêk bîne + create_user_role: Rolê biafirîne demote_user: Bikarhênerê kaşê jêr bike destroy_announcement: Daxûyanîyê jê bibe + destroy_canonical_email_block: Astengkirina e-nameyê jê bibe destroy_custom_emoji: Emojîya kesanekirî jê bibe destroy_domain_allow: Navperên mafdayî jê bibe destroy_domain_block: Navperên astengkirî jê bibe @@ -254,6 +258,7 @@ ku: destroy_ip_block: Tomara IPyê jêbibe destroy_status: Şandiyê jê bibe destroy_unavailable_domain: Navperên tuneyî jê bibe + destroy_user_role: Rolê hilweşîne disable_2fa_user: 2FA neçalak bike disable_custom_emoji: Emojîya kesanekirî neçalak bike disable_sign_in_token_auth_user: Ji bo bikarhênerê piştrastkirina navnîşana e-name yê ya token neçalak bike @@ -280,24 +285,30 @@ ku: update_announcement: Daxûyaniyê rojane bike update_custom_emoji: Emojîya kesanekirî rojane bike update_domain_block: Navperên astengkirî rojane bike + update_ip_block: Rolê IP rojane bike update_status: Şandiyê rojane bike + update_user_role: Rolê rojane bike actions: approve_appeal_html: "%{name} îtiraza biryara çavdêriyê ji %{target} pejirand" approve_user_html: "%{name} tomarkirina ji %{target} pejirand" assigned_to_self_report_html: "%{name} ji xwe re ragihandinek %{target} hilda" change_email_user_html: "%{name} navnîşana e-nameya bikarhêner %{target} guherand" + change_role_user_html: "%{name} rolê %{target} guhert" confirm_user_html: "%{name} navnîşana e-nameya bikarhêner %{target} piştrast kir" create_account_warning_html: "%{name} ji bo %{target} hişyariyek şand" create_announcement_html: "%{name} agahdarkirineke nû çêkir %{target}" + create_canonical_email_block_html: "%{name} bi riya dabeşkirinê e-nameya %{target} asteng kir" create_custom_emoji_html: "%{name} emojîyeke nû ya %{target} bar kir" create_domain_allow_html: "%{name} bi navperê %{target} re maf da demnameya giştî" create_domain_block_html: "%{name} navpera %{target} asteng kir" create_email_domain_block_html: "%{name} e-nameya navperê %{target} asteng kir" create_ip_block_html: "%{name} ji bo IPya %{target} rêzikname saz kir" create_unavailable_domain_html: "%{name} bi navperê %{target} re gihandinê rawestand" + create_user_role_html: "%{name} rola %{target} afirand" demote_user_html: "%{name} bikarhênerê %{target} kaşê jêr kir" destroy_announcement_html: "%{name} daxûyaniyeke %{target} jê bir" - destroy_custom_emoji_html: "%{name} emojiya %{target} tune kir" + destroy_canonical_email_block_html: "%{name} bi riya dabeşkirinê astengiya li ser e-nameya %{target} rakir" + destroy_custom_emoji_html: "%{name} emojiya %{target} jê bir" destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda demnameya giştî" destroy_domain_block_html: "%{name} navpera %{target} asteng kir" destroy_email_domain_block_html: "%{name} astengiya li ser navpera e-nameyê %{target} rakir" @@ -305,6 +316,7 @@ ku: destroy_ip_block_html: "%{name}, ji bo IPya %{target} rêziknameyê jêbir" destroy_status_html: "%{name} ji alîyê %{target} ve şandiyê rakir" destroy_unavailable_domain_html: "%{name} bi navperê %{target} re gihandinê berdewam kir" + destroy_user_role_html: "%{name} rola %{target} jê bir" disable_2fa_user_html: "%{name} ji bo bikarhênerê %{target} du faktorî neçalak kir" disable_custom_emoji_html: "%{name} emojiya %{target} neçalak kir" disable_sign_in_token_auth_user_html: "%{name} ji bo %{target} nîşana mafdayîna e-nameya ne çalak kir" @@ -331,8 +343,9 @@ ku: update_announcement_html: "%{name} daxûyaniya %{target} rojane kir" update_custom_emoji_html: "%{name} emojiya %{target} rojane kir" update_domain_block_html: "%{name} ji bo navpera %{target} astengkirin rojane kir" + update_ip_block_html: "%{name} rolê %{target} guhert ji bo IP" update_status_html: "%{name} şandiya bikarhêner %{target} rojane kir" - deleted_status: "(şandiyeke jêbirî)" + update_user_role_html: "%{name} rola %{target} guherand" empty: Tomarkirin nehate dîtin. filter_by_action: Li gorî çalakiyê biparzinîne filter_by_user: Li gorî bikarhênerê biparzinîne @@ -797,8 +810,8 @@ ku: title: Mafê bide gihîştina ne naskirî bo demnameya gelemperî title: Sazkariyên malperê trendable_by_default: - desc_html: Hashtagên ku berê hatibûn qedexekirin bandor dike - title: Bihêle ku hashtag bêyî nirxandinek pêşîn bibe rojev + desc_html: Naveroka rojevê nîşankirî dikare were qedexekirin + title: Mafê bide rojevê bêyî ku were nirxandin trends: desc_html: Hashtagên ku berê hatibûn nirxandin ên ku niha rojev in bi gelemperî bide xuyakirin title: Hashtagên rojevê @@ -1183,6 +1196,8 @@ ku: edit: add_keyword: Kilîtpeyv tevî bike keywords: Peyvkilît + statuses: Şandiyên kesane + statuses_hint_html: Ev parzûn ji bo hibijartina şandiyên kesane tê sepandin bêyî ku ew bi peyvkilîtên jêrîn re lihevhatî bin. Şandiyan binirxîne an jî ji parzûnê rake. title: Parzûnê serrast bike errors: deprecated_api_multiple_keywords: Van parameteran ji vê sepanê nayên guhertin ji ber ku ew li ser bêtirî yek kilîtpeyvên parzûnkirî têne sepandin. Sepaneke nûtir an navrûya bikarhêneriyê ya malperê bi kar bîne. @@ -1196,10 +1211,23 @@ ku: keywords: one: "%{count} kilîtpeyv" other: "%{count} kilîtpeyv" + statuses: + one: "%{count} şandî" + other: "%{count} şandî" + statuses_long: + one: "%{count} şandiyê kesane yê veşartî" + other: "%{count} şandiyê kesane yê veşartî" title: Parzûn new: save: Parzûna nû tomar bike title: Parzûnek nû li zêde bike + statuses: + back_to_filter: Vegere bo parzûnê + batch: + remove: Ji parzûnê rake + index: + hint: Ev parzûn bêyî pîvanên din ji bo hilbijartina şandiyên kesane tê sepandin. Tu dikarî ji navrûya tevnê bêtir şandiyan tevlî vê parzûnê bikî. + title: Şandiyên parzûnkirî footer: developers: Pêşdebir more: Bêtir… @@ -1207,12 +1235,22 @@ ku: trending_now: Niha rojevê de generic: all: Hemû + all_items_on_page_selected_html: + one: Berhemê %{count} li ser vê rûpelê hatiye hilbijartin. + other: Hemû berhemên %{count} li ser vê rûpelê hatine hilbijartin. + all_matching_items_selected_html: + one: Berhemê %{count} ku bi lêgerîna te re lihevhatî ye hatiye hilbijartin. + other: Hemû berhemên %{count} ku bi lêgerîna te re lihevhatî ne hatine hilbijartin. changes_saved_msg: Guhertin bi serkeftî tomar bû! copy: Jê bigire delete: Jê bibe + deselect: Hemûyan hilnebijêre none: Ne yek order_by: Rêz bike bi save_changes: Guhertinan tomar bike + select_all_matching_items: + one: Berhemê %{count} ku bi lêgerîna te re lihevhatî ye hilbijêre. + other: Hemû berhemên %{count} ku bi lêgerîna te re lihevhatî ne hilbijêre. today: îro validation_errors: one: Tiştek hîn ne rast e! Ji kerema xwe çewtiya li jêr di ber çavan re derbas bike @@ -1321,17 +1359,6 @@ ku: subject: "%{name} ragihandinek şand" sign_up: subject: "%{name} tomar bû" - digest: - action: Hemû agahdariyan nîşan bide - body: Li vir kurteyeke peyamên ku li te derbasbûnd ji serdana te ya dawîn di %{since} de - mention: "%{name} behsa te kir:" - new_followers_summary: - one: Herwiha, dema tu dûr bûyî te şopînerek nû bi dest xist! Bijî! - other: Herwiha, dema tu dûr bûyî te %{count} şopînerek nû bi dest xist! Bijî! - subject: - one: "1 agahdarî ji serdana te ya herî dawî 🐘" - other: "%{count} agahdarî ji serdana te ya herî dawî 🐘" - title: Di tunebûna te de... favourite: body: 'Şandiya te hate bijartin ji alî %{name} ve:' subject: "%{name} şandiya te hez kir" diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 96119216d..4e79ca188 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -127,7 +127,6 @@ lt: username: Slapyvardis warn: Įspėti action_logs: - deleted_status: "(panaikintas statusas)" title: Audito žurnalas custom_emojis: by_domain: Domenas @@ -493,11 +492,6 @@ lt: moderation: title: Moderacija notification_mailer: - digest: - action: Peržiurėti visus pranešimus - body: Čia yra trumpa santrauka žinutės, kurią jūs praleidote nuo jūsų paskutinio apsilankymo %{since} - mention: "%{name} paminėjo jus:" - title: Kol jūsų nebuvo... favourite: body: 'Jūsų statusą pamėgo %{name}:' subject: "%{name} pamėgo Jūsų statusą" diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 21da83077..ae2087390 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -45,8 +45,8 @@ lv: unavailable_content_description: domain: Serveris reason: Iemesls - rejecting_media: 's faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:' - rejecting_media_title: Filtrēts saturs + rejecting_media: 'Multivides faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:' + rejecting_media_title: Filtrēta multivide silenced: 'Ziņas no šiem serveriem tiks paslēptas publiskās ziņu lentās un sarunās, un no lietotāju mijiedarbības netiks ģenerēti paziņojumi, ja vien tu tiem nesekosi:' silenced_title: Ierobežoti serveri suspended: 'Nekādi dati no šiem serveriem netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu jebkādu mijiedarbību vai saziņu ar lietotājiem no šiem serveriem:' @@ -240,17 +240,21 @@ lv: approve_user: Apstiprināt lietotāju assigned_to_self_report: Piešķirt Pārskatu change_email_user: Mainīt e-pastu lietotājam + change_role_user: Mainīt lietotāja lomu confirm_user: Apstiprināt lietotāju create_account_warning: Izveidot Brīdinājumu create_announcement: Izveidot Paziņojumu + create_canonical_email_block: Izveidot E-pasta Bloku create_custom_emoji: Izveidot pielāgotu emocijzīmi create_domain_allow: Izveidot Domēna Atļauju create_domain_block: Izveidot Domēna Bloku create_email_domain_block: Izveidot E-pasta Domēna Bloku create_ip_block: Izveidot IP noteikumu create_unavailable_domain: Izveidot Nepieejamu Domēnu + create_user_role: Izveidot lomu demote_user: Pazemināt Lietotāju destroy_announcement: Dzēst Paziņojumu + destroy_canonical_email_block: Dzēst E-pasta Bloku destroy_custom_emoji: Dzēst pielāgoto emocijzīmi destroy_domain_allow: Dzēst Domēna Atļauju destroy_domain_block: Dzēst Domēna Bloku @@ -259,6 +263,7 @@ lv: destroy_ip_block: Dzēst IP noteikumu destroy_status: Izdzēst Rakstu destroy_unavailable_domain: Dzēst Nepieejamu Domēnu + destroy_user_role: Iznīcināt lomu disable_2fa_user: Atspējot 2FA disable_custom_emoji: Atspējot pielāgotu emocijzīmi disable_sign_in_token_auth_user: Atspējoja e-pasta marķiera autentifikāciju lietotājam @@ -285,24 +290,30 @@ lv: update_announcement: Atjaunināt Paziņojumu update_custom_emoji: Atjaunināt pielāgoto emocijzīmi update_domain_block: Atjaunināt Domēna Bloku + update_ip_block: Atjaunināt IP noteikumu update_status: Atjaunināt ziņu + update_user_role: Atjaunināt lomu actions: approve_appeal_html: "%{name} apstiprināja moderācijas lēmuma apelāciju no %{target}" approve_user_html: "%{name} apstiprināja reģistrēšanos no %{target}" assigned_to_self_report_html: "%{name} piešķīra pārskatu %{target} sev" change_email_user_html: "%{name} nomainīja e-pasta adresi lietotājam %{target}" + change_role_user_html: "%{name} nomainīja lomu uz %{target}" confirm_user_html: "%{name} apstiprināja e-pasta adresi lietotājam %{target}" create_account_warning_html: "%{name} nosūtīja brīdinājumu %{target}" create_announcement_html: "%{name} izveidoja jaunu paziņojumu %{target}" + create_canonical_email_block_html: "%{name} bloķēja e-pastu ar hešu %{target}" create_custom_emoji_html: "%{name} augšupielādēja jaunu emocijzīmi %{target}" create_domain_allow_html: "%{name} atļāva federāciju ar domēnu %{target}" create_domain_block_html: "%{name} bloķēja domēnu %{target}" create_email_domain_block_html: "%{name} bloķēja e-pasta domēnu %{target}" create_ip_block_html: "%{name} izveidoja nosacījumu priekš IP %{target}" create_unavailable_domain_html: "%{name} apturēja piegādi uz domēnu %{target}" + create_user_role_html: "%{name} nomainīja %{target} lomu" demote_user_html: "%{name} pazemināja lietotāju %{target}" destroy_announcement_html: "%{name} izdzēsa paziņojumu %{target}" - destroy_custom_emoji_html: "%{name} iznīcināja emocijzīmi %{target}" + destroy_canonical_email_block_html: "%{name} atbloķēja e-pastu ar hešu %{target}" + destroy_custom_emoji_html: "%{name} izdzēsa emocijzīmi %{target}" destroy_domain_allow_html: "%{name} neatļāva federāciju ar domēnu %{target}" destroy_domain_block_html: "%{name} atbloķēja domēnu %{target}" destroy_email_domain_block_html: "%{name} atbloķēja e-pasta domēnu %{target}" @@ -310,6 +321,7 @@ lv: destroy_ip_block_html: "%{name} izdzēsa nosacījumu priekš IP %{target}" destroy_status_html: "%{name} noņēma ziņu %{target}" destroy_unavailable_domain_html: "%{name} atjaunoja piegādi uz domēnu %{target}" + destroy_user_role_html: "%{name} izdzēsa %{target} lomu" disable_2fa_user_html: "%{name} atspējoja divfaktoru prasības lietotājam %{target}" disable_custom_emoji_html: "%{name} atspējoja emocijzīmi %{target}" disable_sign_in_token_auth_user_html: "%{name} atspējoja e-pasta marķiera autentifikāciju %{target}" @@ -336,8 +348,9 @@ lv: update_announcement_html: "%{name} atjaunināja paziņojumu %{target}" update_custom_emoji_html: "%{name} atjaunināja emocijzīmi %{target}" update_domain_block_html: "%{name} atjaunināja domēna bloku %{target}" + update_ip_block_html: "%{name} mainīja nosacījumu priekš IP %{target}" update_status_html: "%{name} atjaunināja ziņu %{target}" - deleted_status: "(dzēsta ziņa)" + update_user_role_html: "%{name} nomainīja %{target} lomu" empty: Žurnāli nav atrasti. filter_by_action: Filtrēt pēc darbības filter_by_user: Filtrēt pēc lietotāja @@ -811,8 +824,8 @@ lv: title: Atļaut neautentificētu piekļuvi publiskai ziņu lentai title: Vietnes iestatījumi trendable_by_default: - desc_html: Ietekmē tēmturus, kas iepriekš nav bijuši aizliegti - title: Ļaujiet tēmturiem mainīties bez iepriekšējas pārskatīšanas + desc_html: Konkrētais populārais saturs joprojām var būt nepārprotami aizliegts + title: Atļaut tendences bez iepriekšējas pārskatīšanas trends: desc_html: Publiski parādīt iepriekš pārskatītus tēmturus, kas pašlaik ir populāri title: Populārākie tēmturi @@ -1201,6 +1214,8 @@ lv: edit: add_keyword: Pievienot atslēgvārdu keywords: Atslēgvārdi + statuses: Individuālās ziņas + statuses_hint_html: Šis filtrs attiecas uz atsevišķām ziņām neatkarīgi no tā, vai tās atbilst tālāk norādītajiem atslēgvārdiem. Pārskatīt vai noņemt ziņas no filtra. title: Rediģēt filtru errors: deprecated_api_multiple_keywords: Šos parametrus šajā lietojumprogrammā nevar mainīt, jo tie attiecas uz vairāk nekā vienu filtra atslēgvārdu. Izmanto jaunāku lietojumprogrammu vai tīmekļa saskarni. @@ -1215,10 +1230,25 @@ lv: one: "%{count} atsēgvārds" other: "%{count} atslēgvārdi" zero: "%{count} atslēgvārdu" + statuses: + one: "%{count} ziņa" + other: "%{count} ziņas" + zero: "%{count} ziņu" + statuses_long: + one: paslēpta %{count} individuālā ziņa + other: slēptas %{count} individuālās ziņas + zero: "%{count} paslēptu ziņu" title: Filtri new: save: Saglabāt jauno filtru title: Pievienot jaunu filtru + statuses: + back_to_filter: Atpakaļ pie filtra + batch: + remove: Noņemt no filtra + index: + hint: Šis filtrs attiecas uz atsevišķu ziņu atlasi neatkarīgi no citiem kritērijiem. Šim filtram tu vari pievienot vairāk ziņu, izmantojot tīmekļa saskarni. + title: Filtrētās ziņas footer: developers: Izstrādātāji more: Vairāk… @@ -1226,12 +1256,25 @@ lv: trending_now: Šobrīd tendences generic: all: Visi + all_items_on_page_selected_html: + one: Šajā lapā ir atlasīts %{count} vienums. + other: Šajā lapā ir atlasīti %{count} vienumi. + zero: Šajā lapā ir atlasīts %{count} vienumu. + all_matching_items_selected_html: + one: Atlasīts %{count} vienums, kas atbilst tavam meklēšanas vaicājumam. + other: Atlasīti visi %{count} vienumi, kas atbilst tavam meklēšanas vaicājumam. + zero: Atlasīts %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam. changes_saved_msg: Izmaiņas veiksmīgi saglabātas! copy: Kopēt delete: Dzēst + deselect: Atcelt visu atlasi none: Neviens order_by: Kārtot pēc save_changes: Saglabāt izmaiņas + select_all_matching_items: + one: Atlasi %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam. + other: Atlasi visus %{count} vienumus, kas atbilst tavam meklēšanas vaicājumam. + zero: Atlasi %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam. today: šodien validation_errors: one: Kaut kas vēl nav īsti kārtībā! Lūdzu, pārskati zemāk norādīto kļūdu @@ -1342,19 +1385,6 @@ lv: subject: "%{name} iesniedza ziņojumu" sign_up: subject: "%{name} ir pierakstījies" - digest: - action: Rādīt visus paziņojumus - body: Šeit ir īss kopsavilkums par ziņojumiem, kurus tu esi palaidis garām kopš pēdējā apmeklējuma %{since} - mention: "%{name} pieminēja tevi:" - new_followers_summary: - one: Tāpat, atrodoties prom, esi ieguvis vienu jaunu sekotāju! Jip! - other: Turklāt, atrodoties prom, esi ieguvis %{count} jaunus sekotājus! Apbrīnojami! - zero: "%{count} jaunu sekotāju!" - subject: - one: "1 jauns paziņojums kopš tava pēdējā apmeklējuma 🐘" - other: "%{count} jauni paziņojumi kopš tava pēdējā apmeklējuma 🐘" - zero: "%{count} jaunu paziņojumu kopš tava pēdējā apmeklējuma" - title: Tavas prombūtnes laikā... favourite: body: 'Tavu ziņu izlasei pievienoja %{name}:' subject: "%{name} pievienoja tavu ziņu izlasei" diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 76a3ec07c..ea05859ac 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -127,8 +127,6 @@ ml: generic: all: എല്ലാം notification_mailer: - digest: - action: എല്ലാ അറിയിപ്പുകളും കാണിക്കുക follow: body: "%{name} ഇപ്പോൾ നിങ്ങളെ പിന്തുടരുന്നു!" subject: "%{name} ഇപ്പോൾ നിങ്ങളെ പിന്തുടരുന്നു" diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 36aa351d9..b80a0d5c9 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -256,7 +256,6 @@ ms: create_unavailable_domain_html: "%{name} telah menghentikan penghantaran ke domain %{target}" demote_user_html: "%{name} telah menurunkan taraf pengguna %{target}" destroy_announcement_html: "%{name} telah memadamkan pengumuman %{target}" - destroy_custom_emoji_html: "%{name} telah memusnahkan emoji %{target}" destroy_domain_allow_html: "%{name} telah membuang kebenaran persekutuan dengan domain %{target}" destroy_domain_block_html: "%{name} telah menyahsekat domain %{target}" destroy_email_domain_block_html: "%{name} telah menyahsekat domain e-mel %{target}" @@ -285,7 +284,6 @@ ms: update_custom_emoji_html: "%{name} telah mengemaskini emoji %{target}" update_domain_block_html: "%{name} telah mengemaskini penyekatan domain untuk %{target}" update_status_html: "%{name} telah mengemaskini hantaran oleh %{target}" - deleted_status: "(hantaran telah dipadam)" empty: Tiada log dijumpai. filter_by_action: Tapis mengikut tindakan filter_by_user: Tapis mengikut pengguna @@ -542,8 +540,5 @@ ms: exports: archive_takeout: in_progress: Mengkompil arkib anda... - notification_mailer: - digest: - title: Ketika anda tiada di sini... users: follow_limit_reached: Anda tidak boleh mengikut lebih daripada %{limit} orang diff --git a/config/locales/nl.yml b/config/locales/nl.yml index e34092f8f..086568664 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -289,7 +289,6 @@ nl: create_unavailable_domain_html: "%{name} heeft de bezorging voor domein %{target} beëindigd" demote_user_html: Gebruiker %{target} is door %{name} gedegradeerd destroy_announcement_html: "%{name} heeft de mededeling %{target} verwijderd" - destroy_custom_emoji_html: "%{name} verwijderde emoji %{target}" destroy_domain_allow_html: "%{name} heeft de federatie met het domein %{target} afgekeurd" destroy_domain_block_html: Domein %{target} is door %{name} gedeblokkeerd destroy_email_domain_block_html: "%{name} heeft het e-maildomein %{target} gedeblokkeerd" @@ -320,7 +319,6 @@ nl: update_custom_emoji_html: Emoji %{target} is door %{name} bijgewerkt update_domain_block_html: "%{name} heeft de domeinblokkade bijgewerkt voor %{target}" update_status_html: "%{name} heeft de berichten van %{target} bijgewerkt" - deleted_status: "(verwijderd bericht}" empty: Geen logs gevonden. filter_by_action: Op actie filteren filter_by_user: Op gebruiker filteren @@ -670,9 +668,6 @@ nl: desc_html: Toon een link naar de openbare tijdlijnpagina op de voorpagina en geef de API zonder in te loggen toegang tot de openbare tijdlijn title: Toegang tot de openbare tijdlijn zonder in te loggen toestaan title: Server-instellingen - trendable_by_default: - desc_html: Heeft invloed op hashtags die nog niet eerder niet zijn toegestaan - title: Hashtags toestaan om trending te worden zonder voorafgaande beoordeling trends: desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen title: Trends @@ -1083,14 +1078,6 @@ nl: admin: report: subject: "%{name} heeft een rapportage ingediend" - digest: - action: Alle meldingen bekijken - body: Hier is een korte samenvatting van de berichten die je sinds jouw laatste bezoek op %{since} hebt gemist - mention: "%{name} vermeldde jou in:" - new_followers_summary: - one: Je hebt trouwens sinds je weg was er ook een nieuwe volger bijgekregen! Hoera! - other: Je hebt trouwens sinds je weg was er ook %{count} nieuwe volgers bijgekregen! Fantastisch! - title: Tijdens jouw afwezigheid... favourite: body: 'Jouw bericht werd door %{name} als favoriet gemarkeerd:' subject: "%{name} markeerde jouw bericht als favoriet" diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 392b927e1..440259369 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -254,7 +254,6 @@ nn: create_ip_block_html: "%{name} opprettet regel for IP %{target}" reject_user_html: "%{name} avslo registrering fra %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" - deleted_status: "(sletta status)" empty: Ingen loggar funne. filter_by_action: Sorter etter handling filter_by_user: Sorter etter brukar @@ -558,9 +557,6 @@ nn: desc_html: Vis offentlig tidslinje på landingssiden title: Tillat uautentisert tilgang til offentleg tidsline title: Sideinnstillingar - trendable_by_default: - desc_html: Påverkar emneknaggar som ikkje har vore tillatne tidlegare - title: Tillat emneknaggar å verta populære utan gjennomgang på førehand trends: title: Populære emneknaggar site_uploads: @@ -888,14 +884,6 @@ nn: carry_mutes_over_text: Denne brukeren flyttet fra %{acct}, som du hadde dempet. copy_account_note_text: 'Denne brukeren flyttet fra %{acct}, her var dine tidligere notater om dem:' notification_mailer: - digest: - action: Sjå alle varsel - body: Her er ei kort samanfatting av meldingane du gjekk glepp av sidan siste gong du var innom %{since} - mention: "%{name} nemnde deg i:" - new_followers_summary: - one: Du har forresten fått deg ein ny fylgjar mens du var borte! Hurra! - other: Du har forresten fått deg %{count} nye fylgjarar mens du var borte! Hurra! - title: Mens du var borte... favourite: body: 'Statusen din vart merkt som favoritt av %{name}:' subject: "%{name} merkte statusen din som favoritt" diff --git a/config/locales/no.yml b/config/locales/no.yml index 13f13d8bd..27b7be807 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -247,7 +247,6 @@ create_ip_block_html: "%{name} opprettet regel for IP %{target}" reject_user_html: "%{name} avslo registrering fra %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" - deleted_status: "(statusen er slettet)" empty: Ingen loggføringer ble funnet. filter_by_action: Sorter etter handling filter_by_user: Sorter etter bruker @@ -551,9 +550,6 @@ desc_html: Vis offentlig tidslinje på landingssiden title: Forhandsvis tidslinjen title: Nettstedsinnstillinger - trendable_by_default: - desc_html: Påvirker hashtags som ikke har blitt nektet tidligere - title: Tillat hashtags for trend uten foregående vurdering trends: title: Trendende emneknagger site_uploads: @@ -868,14 +864,6 @@ carry_mutes_over_text: Denne brukeren flyttet fra %{acct}, som du hadde dempet. copy_account_note_text: 'Denne brukeren flyttet fra %{acct}, her var dine tidligere notater om dem:' notification_mailer: - digest: - action: Vis alle varslinger - body: Her er en kort oppsummering av hva du har gått glipp av siden du sist logget inn den %{since} - mention: "%{name} nevnte deg i:" - new_followers_summary: - one: I tillegg har du fått en ny følger mens du var borte. Hurra! - other: I tillegg har du har fått %{count} nye følgere mens du var borte! Imponerende! - title: I ditt fravær… favourite: body: 'Statusen din ble likt av %{name}:' subject: "%{name} likte statusen din" diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 463940567..d8560fd1c 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -216,7 +216,6 @@ oc: update_announcement: Actualizar l’anóncia update_custom_emoji: Actualizar l’emoji personalizat update_status: Actualizar l’estatut - deleted_status: "(estatut suprimit)" empty: Cap de jornal pas trobat. filter_by_action: Filtrar per accion filter_by_user: Filtrar per utilizaire @@ -793,14 +792,6 @@ oc: moderation: title: Moderacion notification_mailer: - digest: - action: Veire totas las notificacions - body: Trobatz aquí un resumit dels messatges qu’avètz mancats dempuèi vòstra darrièra visita lo %{since} - mention: "%{name} vos a mencionat dins :" - new_followers_summary: - one: Avètz un nòu seguidor dempuèi vòstra darrièra visita ! Ouà ! - other: Avètz %{count} nòus seguidors dempuèi vòstra darrièra visita ! Qué crane ! - title: Pendent vòstra abséncia… favourite: body: "%{name} a mes vòstre estatut en favorit :" subject: "%{name} a mes vòstre estatut en favorit" diff --git a/config/locales/pl.yml b/config/locales/pl.yml index f51c231a6..99169454e 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -245,6 +245,7 @@ pl: approve_user: Zatwierdź użytkownika assigned_to_self_report: Przypisz zgłoszenie change_email_user: Zmień adres e-mail użytkownika + change_role_user: Zmień rolę użytkownika confirm_user: Potwierdź użytkownika create_account_warning: Utwórz ostrzeżenie create_announcement: Utwórz ogłoszenie @@ -254,6 +255,7 @@ pl: create_email_domain_block: Utwórz blokadę domeny e-mail create_ip_block: Utwórz regułę IP create_unavailable_domain: Utwórz niedostępną domenę + create_user_role: Utwórz rolę demote_user: Zdegraduj użytkownika destroy_announcement: Usuń ogłoszenie destroy_custom_emoji: Usuń niestandardowe emoji @@ -264,6 +266,7 @@ pl: destroy_ip_block: Usuń regułę IP destroy_status: Usuń wpis destroy_unavailable_domain: Usuń niedostępną domenę + destroy_user_role: Zlikwiduj rolę disable_2fa_user: Wyłącz 2FA disable_custom_emoji: Wyłącz niestandardowe emoji disable_sign_in_token_auth_user: Wyłącz uwierzytelnianie tokenu e-mail dla użytkownika @@ -290,12 +293,15 @@ pl: update_announcement: Aktualizuj ogłoszenie update_custom_emoji: Aktualizuj niestandardowe emoji update_domain_block: Zaktualizuj blokadę domeny + update_ip_block: Aktualizuj regułę IP update_status: Aktualizuj wpis + update_user_role: Aktualizuj rolę actions: approve_appeal_html: "%{name} zatwierdził(-a) odwołanie decyzji moderacyjnej od %{target}" approve_user_html: "%{name} zatwierdził rejestrację od %{target}" assigned_to_self_report_html: "%{name} przypisał(a) sobie zgłoszenie %{target}" change_email_user_html: "%{name} zmienił(a) adres e-mail użytkownika %{target}" + change_role_user_html: "%{name} zmienił rolę %{target}" confirm_user_html: "%{name} potwierdził(a) adres e-mail użytkownika %{target}" create_account_warning_html: "%{name} wysłał(a) ostrzeżenie do %{target}" create_announcement_html: "%{name} utworzył(a) nowe ogłoszenie %{target}" @@ -305,9 +311,10 @@ pl: create_email_domain_block_html: "%{name} dodał(a) domenę e-mail %{target} na czarną listę" create_ip_block_html: "%{name} stworzył(a) regułę dla IP %{target}" create_unavailable_domain_html: "%{name} przestał(a) doręczać na domenę %{target}" + create_user_role_html: "%{name} utworzył rolę %{target}" demote_user_html: "%{name} zdegradował(a) użytkownika %{target}" destroy_announcement_html: "%{name} usunął(-ęła) ogłoszenie %{target}" - destroy_custom_emoji_html: "%{name} usunął(-ęła) emoji %{target}" + destroy_custom_emoji_html: "%{name} usunął emoji %{target}" destroy_domain_allow_html: "%{name} usunął(-ęła) domenę %{target} z białej listy" destroy_domain_block_html: "%{name} odblokował(a) domenę %{target}" destroy_email_domain_block_html: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy" @@ -315,6 +322,7 @@ pl: destroy_ip_block_html: "%{name} usunął(-ęła) regułę dla IP %{target}" destroy_status_html: "%{name} usunął(-ęła) wpis użytkownika %{target}" destroy_unavailable_domain_html: "%{name} wznowił(a) doręczanie do domeny %{target}" + destroy_user_role_html: "%{name} usunął rolę %{target}" disable_2fa_user_html: "%{name} wyłączył(a) uwierzytelnianie dwustopniowe użytkownikowi %{target}" disable_custom_emoji_html: "%{name} wyłączył(a) emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} wyłączył/a uwierzytelnianie tokenem e-mail dla %{target}" @@ -342,7 +350,7 @@ pl: update_custom_emoji_html: "%{name} zaktualizował(a) emoji %{target}" update_domain_block_html: "%{name} zaktualizował(a) blokadę domeny dla %{target}" update_status_html: "%{name} zaktualizował(a) wpis użytkownika %{target}" - deleted_status: "(usunięty wpis)" + update_user_role_html: "%{name} zmienił rolę %{target}" empty: Nie znaleziono aktywności w dzienniku. filter_by_action: Filtruj według działania filter_by_user: Filtruj według użytkownika @@ -827,8 +835,8 @@ pl: title: Podgląd osi czasu title: Ustawienia strony trendable_by_default: - desc_html: Wpływa na hashtagi, które nie były wcześniej niedozwolone - title: Hashtagi mogą pojawiać się w trendach bez wcześniejszego zatwierdzenia + desc_html: Pewne treści trendu nadal mogą być bezpośrednio zabronione + title: Zezwalaj na trendy bez ich uprzedniego przejrzenia trends: desc_html: Wyświetlaj publicznie wcześniej sprawdzone hashtagi, które są obecnie na czasie title: Popularne hashtagi @@ -1222,7 +1230,7 @@ pl: add_keyword: Dodaj słowo kluczowe keywords: Słowa kluczowe statuses: Pojedyncze wpisy - statuses_hint_html: Ten filtr ma zastosowanie do wybierania poszczególnych postów niezależnie od tego, czy pasują one do słów kluczowych poniżej. Możesz przejrzeć te posty i usunąć je z filtra klikając tutaj. + statuses_hint_html: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od tego, czy pasują one do słów kluczowych poniżej. Przejrzyj lub usuń wpisy z filtra. title: Edytuj filtr errors: deprecated_api_multiple_keywords: Te parametry nie mogą zostać zmienione z tej aplikacji, ponieważ dotyczą więcej niż jednego słowa kluczowego. Użyj nowszej wersji aplikacji lub interfejsu internetowego. @@ -1247,7 +1255,7 @@ pl: batch: remove: Usuń z filtra index: - hint: Ten filtr ma zastosowanie do wybierania poszczególnych postów niezależnie od innych kryteriów. Możesz dodać więcej postów do tego filtra z interfejsu WWW. + hint: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od pozostałych kryteriów. Możesz dodać więcej wpisów do tego filtra z interfejsu internetowego. title: Filtrowane posty footer: developers: Dla programistów @@ -1259,6 +1267,7 @@ pl: changes_saved_msg: Ustawienia zapisane! copy: Kopiuj delete: Usuń + deselect: Odznacz wszystkie none: Żaden order_by: Uporządkuj według save_changes: Zapisz zmiany @@ -1374,21 +1383,6 @@ pl: subject: "%{name} wysłał raport" sign_up: subject: "%{name} zarejestrował(-a) się" - digest: - action: Wyświetl wszystkie powiadomienia - body: Oto krótkie podsumowanie wiadomości, które ominęły Cię od Twojej ostatniej wizyty (%{since}) - mention: "%{name} wspomniał o Tobie w:" - new_followers_summary: - few: "(%{count}) nowe osoby śledzą Cię!" - many: "(%{count}) nowych osób Cię śledzi! Wspaniale!" - one: Dodatkowo, w czasie nieobecności zaczęła śledzić Cię jedna osoba Gratulacje! - other: Dodatkowo, zaczęło Cię śledzić %{count} nowych osób! Wspaniale! - subject: - few: "%{count} nowe powiadomienia od Twojej ostatniej wizyty 🐘" - many: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘" - one: "1 nowe powiadomienie od Twojej ostatniej wizyty 🐘" - other: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘" - title: W trakcie Twojej nieobecności… favourite: body: 'Twój wpis został polubiony przez %{name}:' subject: "%{name} lubi Twój wpis" diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 4a7800b60..9460d651f 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -103,11 +103,17 @@ pt-BR: avatar: Imagem de perfil by_domain: Domínio change_email: + changed_msg: E-mail alterado com sucesso! current_email: E-mail atual label: Alterar e-mail new_email: Novo e-mail submit: Alterar e-mail title: Alterar e-mail para %{username} + change_role: + changed_msg: Função alterada com sucesso! + label: Alterar função + no_role: Nenhuma função + title: Alterar função para %{username} confirm: Confirmar confirmed: Confirmado confirming: Confirmando @@ -151,6 +157,7 @@ pt-BR: active: Ativo all: Todos pending: Pendente + silenced: Limitado suspended: Banidos title: Moderação moderation_notes: Notas de moderação @@ -158,6 +165,7 @@ pt-BR: most_recent_ip: IP mais recente no_account_selected: Nenhuma conta foi alterada, pois nenhuma conta foi selecionada no_limits_imposed: Nenhum limite imposto + no_role_assigned: Nenhuma função atribuída not_subscribed: Não inscrito pending: Revisão pendente perform_full_suspension: Banir @@ -184,6 +192,7 @@ pt-BR: reset: Redefinir reset_password: Redefinir senha resubscribe: Reinscrever-se + role: Função search: Pesquisar search_same_email_domain: Outros usuários com o mesmo domínio de e-mail search_same_ip: Outros usuários com o mesmo IP @@ -226,6 +235,7 @@ pt-BR: approve_user: Aprovar Usuário assigned_to_self_report: Adicionar relatório change_email_user: Editar e-mail do usuário + change_role_user: Alteração de Função do Usuário confirm_user: Confirmar Usuário create_account_warning: Criar Aviso create_announcement: Criar Anúncio @@ -235,6 +245,7 @@ pt-BR: create_email_domain_block: Criar Bloqueio de Domínio de E-mail create_ip_block: Criar regra de IP create_unavailable_domain: Criar domínio indisponível + create_user_role: Criar Função demote_user: Rebaixar usuário destroy_announcement: Excluir anúncio destroy_custom_emoji: Excluir emoji personalizado @@ -245,6 +256,7 @@ pt-BR: destroy_ip_block: Excluir regra de IP destroy_status: Excluir Status destroy_unavailable_domain: Deletar domínio indisponível + destroy_user_role: Destruir Função disable_2fa_user: Desativar autenticação de dois fatores disable_custom_emoji: Desativar Emoji Personalizado disable_sign_in_token_auth_user: Desativar autenticação via token por email para Usuário @@ -272,11 +284,13 @@ pt-BR: update_custom_emoji: Editar Emoji Personalizado update_domain_block: Atualizar bloqueio de domínio update_status: Editar Status + update_user_role: Atualizar função actions: approve_appeal_html: "%{name} aprovou o recurso de decisão de moderação de %{target}" approve_user_html: "%{name} aprovado inscrição de %{target}" assigned_to_self_report_html: "%{name} atribuiu o relatório %{target} para si" change_email_user_html: "%{name} alterou o endereço de e-mail do usuário %{target}" + change_role_user_html: "%{name} alterou a função de %{target}" confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}" create_account_warning_html: "%{name} enviou um aviso para %{target}" create_announcement_html: "%{name} criou o novo anúncio %{target}" @@ -286,9 +300,9 @@ pt-BR: create_email_domain_block_html: "%{name} bloqueou do domínio de e-mail %{target}" create_ip_block_html: "%{name} criou regra para o IP %{target}" create_unavailable_domain_html: "%{name} parou a entrega ao domínio %{target}" + create_user_role_html: "%{name} criou a função %{target}" demote_user_html: "%{name} rebaixou o usuário %{target}" destroy_announcement_html: "%{name} excluiu o anúncio %{target}" - destroy_custom_emoji_html: "%{name} excluiu emoji %{target}" destroy_domain_allow_html: "%{name} bloqueou federação com domínio %{target}" destroy_domain_block_html: "%{name} deixou de bloquear domínio %{target}" destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca" @@ -296,6 +310,7 @@ pt-BR: destroy_ip_block_html: "%{name} excluiu regra para o IP %{target}" destroy_status_html: "%{name} excluiu post de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" + destroy_user_role_html: "%{name} excluiu a função %{target}" disable_2fa_user_html: "%{name} desativou a exigência de autenticação de dois fatores para o usuário %{target}" disable_custom_emoji_html: "%{name} desativou o emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} desativou a autenticação via token por email para %{target}" @@ -323,7 +338,7 @@ pt-BR: update_custom_emoji_html: "%{name} atualizou o emoji %{target}" update_domain_block_html: "%{name} atualizou o bloqueio de domínio de %{target}" update_status_html: "%{name} atualizou a publicação de %{target}" - deleted_status: "(status excluído)" + update_user_role_html: "%{name} alterou a função %{target}" empty: Nenhum registro encontrado. filter_by_action: Filtrar por ação filter_by_user: Filtrar por usuário @@ -635,6 +650,54 @@ pt-BR: unresolved: Não resolvido updated_at: Atualizado view_profile: Ver perfil + roles: + add_new: Adicionar função + assigned_users: + one: "%{count} usuário" + other: "%{count} usuários" + categories: + administration: Administração + invites: Convites + moderation: Moderação + special: Especial + delete: Excluir + description_html: Com as funções de usuário, você pode personalizar quais funções e áreas do Mastodon seus usuários podem acessar. + edit: Editar função de '%{name}' + everyone: Permissões padrão + everyone_full_description_html: Esta é a função base que afeta todos os usuários, mesmo aqueles sem uma função atribuída. Todas as outras funções dela herdam as suas permissões. + privileges: + administrator: Administrador + administrator_description: Usuários com essa permissão irão ignorar todas as permissões + invite_users: Convidar Usuários + invite_users_description: Permite que os usuários convidem novas pessoas para o servidor + manage_announcements: Gerenciar Avisos + manage_announcements_description: Permite aos usuários gerenciar anúncios no servidor + manage_blocks_description: Permite aos usuários bloquear provedores de e-mail e endereços IP + manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor + manage_federation: Gerenciar Federação + manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade + manage_invites: Gerenciar convites + manage_invites_description: Permite que os usuários naveguem e desativem os links de convites + manage_reports: Gerenciar relatórios + manage_roles: Gerenciar Funções + manage_roles_description: Permitir que os usuários gerenciem e atribuam papéis abaixo deles + manage_rules: Gerenciar Regras + manage_rules_description: Permite que os usuários alterarem as regras do servidor + manage_settings: Gerenciar Configurações + manage_settings_description: Permite que os usuários alterem as configurações do site + manage_taxonomies: Gerenciar taxonomias + manage_taxonomies_description: Permite aos usuários rever o conteúdo em alta e atualizar as configurações de hashtag + manage_user_access: Gerenciar Acesso de Usuário + manage_user_access_description: Permite aos usuários desativar a autenticação de dois fatores de outros usuários, alterar seu endereço de e-mail e redefinir sua senha + manage_users: Gerenciar usuários + manage_users_description: Permite aos usuários ver os detalhes de outros usuários e executar ações de moderação contra eles + manage_webhooks: Gerenciar Webhooks + manage_webhooks_description: Permite aos usuários configurar webhooks para eventos administrativos + view_audit_log: Ver o registro de auditoria + view_audit_log_description: Permite aos usuários ver um histórico de ações administrativas no servidor + view_dashboard: Ver painel + view_dashboard_description: Permite que os usuários acessem o painel e várias métricas + title: Funções rules: add_new: Adicionar regra delete: Deletar @@ -719,9 +782,6 @@ pt-BR: desc_html: Mostra a linha do tempo pública na página inicial e permite acesso da API à mesma sem autenticação title: Permitir acesso não autenticado à linha pública title: Configurações do site - trendable_by_default: - desc_html: Afeta as hashtags que não foram reprovadas anteriormente - title: Permitir que hashtags fiquem em alta sem revisão prévia trends: desc_html: Mostrar publicamente hashtags previamente revisadas que estão em alta title: Hashtags em alta @@ -768,15 +828,18 @@ pt-BR: disallow_provider: Anular editor title: Em alta no momento usage_comparison: Compartilhado %{today} vezes hoje, em comparação com %{yesterday} de ontem + only_allowed: Somente permitido pending_review: Revisão pendente preview_card_providers: allowed: Links deste editor podem tender + description_html: Estes são domínios a partir dos quais links são comumente compartilhados em seu servidor. Links não tenderão publicamente a menos que o domínio do link seja aprovado. Sua aprovação (ou rejeição) estende-se aos subdomínios. rejected: Links deste editor não vão tender title: Editor rejected: Rejeitado statuses: allow: Permitir postagem allow_account: Permitir autor + description_html: Estes são posts que seu servidor sabe que estão sendo muito compartilhados e favorecidos no momento. Isso pode ajudar seus usuários, novos e retornantes, a encontrar mais pessoas para seguir. Nenhum post é exibido publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar postagens individuais. title: Publicações em alta tags: current_score: Pontuação atual %{score} @@ -1051,6 +1114,7 @@ pt-BR: edit: add_keyword: Adicionar palavra-chave keywords: Palavras-chave + statuses: Postagens individuais title: Editar filtro errors: invalid_context: Contexto inválido ou nenhum contexto informado @@ -1182,17 +1246,6 @@ pt-BR: subject: "%{name} enviou uma denúncia" sign_up: subject: "%{name} se inscreveu" - digest: - action: Ver todas as notificações - body: Aqui está um breve resumo das mensagens que você perdeu desde o seu último acesso em %{since} - mention: "%{name} te mencionou em:" - new_followers_summary: - one: Você tem um novo seguidor! Uia! - other: Você tem %{count} novos seguidores! AÊÊÊ! - subject: - one: "Uma nova notificação desde o seu último acesso 🐘" - other: "%{count} novas notificações desde o seu último acesso 🐘" - title: Enquanto você estava ausente... favourite: body: "%{name} favoritou seu toot:" subject: "%{name} favoritou seu toot" diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index ac21c330e..fd151b73a 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -235,17 +235,21 @@ pt-PT: approve_user: Aprovar Utilizador assigned_to_self_report: Atribuir Denúncia change_email_user: Alterar E-mail do Utilizador + change_role_user: Alterar Função do Utilizador confirm_user: Confirmar Utilizador create_account_warning: Criar Aviso create_announcement: Criar Anúncio + create_canonical_email_block: Criar Bloqueio de E-mail create_custom_emoji: Criar Emoji Personalizado create_domain_allow: Criar Permissão de Domínio create_domain_block: Criar Bloqueio de Domínio create_email_domain_block: Criar Bloqueio de Domínio de E-mail create_ip_block: Criar regra de IP create_unavailable_domain: Criar Domínio Indisponível + create_user_role: Criar Função demote_user: Despromover Utilizador destroy_announcement: Eliminar Anúncio + destroy_canonical_email_block: Eliminar Bloqueio de E-mail destroy_custom_emoji: Eliminar Emoji Personalizado destroy_domain_allow: Eliminar Permissão de Domínio destroy_domain_block: Eliminar Bloqueio de Domínio @@ -254,6 +258,7 @@ pt-PT: destroy_ip_block: Eliminar regra de IP destroy_status: Eliminar Publicação destroy_unavailable_domain: Eliminar Domínio Indisponível + destroy_user_role: Eliminar Função disable_2fa_user: Desativar 2FA disable_custom_emoji: Desativar Emoji Personalizado disable_sign_in_token_auth_user: Desativar token de autenticação por e-mail para Utilizador @@ -280,24 +285,30 @@ pt-PT: update_announcement: Atualizar Anúncio update_custom_emoji: Atualizar Emoji Personalizado update_domain_block: Atualizar Bloqueio de Domínio + update_ip_block: Atualizar regra de IP update_status: Atualizar Estado + update_user_role: Atualizar Função actions: approve_appeal_html: "%{name} aprovou recurso da decisão de moderação de %{target}" approve_user_html: "%{name} aprovou a inscrição de %{target}" assigned_to_self_report_html: "%{name} atribuiu a denúncia %{target} a si próprio" change_email_user_html: "%{name} alterou o endereço de e-mail do utilizador %{target}" + change_role_user_html: "%{name} alterou a função de %{target}" confirm_user_html: "%{name} confirmou o endereço de e-mail do utilizador %{target}" create_account_warning_html: "%{name} enviou um aviso para %{target}" create_announcement_html: "%{name} criou o novo anúncio %{target}" + create_canonical_email_block_html: "%{name} bloqueou o e-mail com a hash %{target}" create_custom_emoji_html: "%{name} carregou o novo emoji %{target}" create_domain_allow_html: "%{name} habilitou a federação com o domínio %{target}" create_domain_block_html: "%{name} bloqueou o domínio %{target}" create_email_domain_block_html: "%{name} bloqueou o domínio de e-mail %{target}" create_ip_block_html: "%{name} criou regra para o IP %{target}" create_unavailable_domain_html: "%{name} parou a entrega ao domínio %{target}" + create_user_role_html: "%{name} criou a função %{target}" demote_user_html: "%{name} despromoveu o utilizador %{target}" destroy_announcement_html: "%{name} eliminou o anúncio %{target}" - destroy_custom_emoji_html: "%{name} destruiu o emoji %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueou o e-mail com a hash %{target}" + destroy_custom_emoji_html: "%{name} eliminou o emoji %{target}" destroy_domain_allow_html: "%{name} desabilitou a federação com o domínio %{target}" destroy_domain_block_html: "%{name} desbloqueou o domínio %{target}" destroy_email_domain_block_html: "%{name} desbloqueou o domínio de e-mail %{target}" @@ -305,6 +316,7 @@ pt-PT: destroy_ip_block_html: "%{name} eliminou regra para o IP %{target}" destroy_status_html: "%{name} removeu a publicação de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" + destroy_user_role_html: "%{name} eliminou a função %{target}" disable_2fa_user_html: "%{name} desativou o requerimento de autenticação em dois passos para o utilizador %{target}" disable_custom_emoji_html: "%{name} desabilitou o emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} desativou token de autenticação por e-mail para %{target}" @@ -331,8 +343,9 @@ pt-PT: update_announcement_html: "%{name} atualizou o anúncio %{target}" update_custom_emoji_html: "%{name} atualizou o emoji %{target}" update_domain_block_html: "%{name} atualizou o bloqueio de domínio para %{target}" + update_ip_block_html: "%{name} alterou regra para IP %{target}" update_status_html: "%{name} atualizou o estado de %{target}" - deleted_status: "(publicação eliminada)" + update_user_role_html: "%{name} alterou a função %{target}" empty: Não foram encontrados registos. filter_by_action: Filtrar por ação filter_by_user: Filtrar por utilizador @@ -795,8 +808,8 @@ pt-PT: title: Visualização da linha temporal title: Configurações do site trendable_by_default: - desc_html: Afecta as hashtags que ainda não tenham sido proibidas - title: Permitir hashtags em tendência sem revisão prévia + desc_html: Conteúdo específico em tendência pode mesmo assim ser explicitamente rejeitado + title: Permitir tendências sem revisão prévia trends: desc_html: Exibir publicamente hashtags atualmente em destaque que já tenham sido revistas anteriormente title: Hashtags em destaque @@ -1181,6 +1194,8 @@ pt-PT: edit: add_keyword: Adicionar palavra-chave keywords: Palavras-chave + statuses: Publicações individuais + statuses_hint_html: Este filtro aplica-se a publicações individuais selecionadas independentemente de estas corresponderem às palavras-chave abaixo. Reveja ou remova publicações do filtro. title: Editar filtros errors: deprecated_api_multiple_keywords: Estes parâmetros não podem ser alterados a partir deste aplicativo porque se aplicam a mais de um filtro de palavra-chave. Use um aplicativo mais recente ou a interface web. @@ -1194,10 +1209,23 @@ pt-PT: keywords: one: "%{count} palavra-chave" other: "%{count} palavras-chaves" + statuses: + one: "%{count} publicação" + other: "%{count} publicações" + statuses_long: + one: "%{count} publicação individual ocultada" + other: "%{count} publicações individuais ocultadas" title: Filtros new: save: Salvar novo filtro title: Adicionar novo filtro + statuses: + back_to_filter: Voltar ao filtro + batch: + remove: Remover do filtro + index: + hint: Este filtro aplica-se a publicações individuais selecionadas independentemente de outros critérios. Pode adicionar mais publicações a este filtro através da interface web. + title: Publicações filtradas footer: developers: Responsáveis pelo desenvolvimento more: Mais… @@ -1205,12 +1233,22 @@ pt-PT: trending_now: Tendências atuais generic: all: Tudo + all_items_on_page_selected_html: + one: "%{count} item nesta página está selecionado." + other: Todo os %{count} items nesta página estão selecionados. + all_matching_items_selected_html: + one: "%{count} item que corresponde à sua pesquisa está selecionado." + other: Todos os %{count} items que correspondem à sua pesquisa estão selecionados. changes_saved_msg: Alterações guardadas! copy: Copiar delete: Eliminar + deselect: Desmarcar todos none: Nenhum order_by: Ordenar por save_changes: Guardar alterações + select_all_matching_items: + one: Selecione %{count} item que corresponde à sua pesquisa. + other: Selecione todos os %{count} items que correspondem à sua pesquisa. today: hoje validation_errors: one: Algo não está correcto. Por favor vê o erro abaixo @@ -1319,17 +1357,6 @@ pt-PT: subject: "%{name} submeteu uma denúncia" sign_up: subject: "%{name} inscreveu-se" - digest: - action: Ver todas as notificações - body: Aqui tens um breve resumo do que perdeste desde o último acesso a %{since} - mention: "%{name} mencionou-te em:" - new_followers_summary: - one: Tens um novo seguidor! Boa! - other: Tens %{count} novos seguidores! Fantástico! - subject: - one: "1 nova notificação desde o seu último acesso 🐘" - other: "%{count} novas notificações desde o seu último acesso 🐘" - title: Enquanto estiveste ausente… favourite: body: 'O teu post foi adicionado aos favoritos por %{name}:' subject: "%{name} adicionou o teu post aos favoritos" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 90f2db0c4..b129c8901 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -245,17 +245,21 @@ ru: approve_user: Утвердить assigned_to_self_report: Присвоение жалоб change_email_user: Изменение эл. почты пользователя + change_role_user: Изменить роль пользователя confirm_user: Подтверждение пользователей create_account_warning: Выдача предупреждения create_announcement: Создание объявлений + create_canonical_email_block: Создать блокировку эл. почты create_custom_emoji: Добавление эмодзи create_domain_allow: Разрешение доменов create_domain_block: Блокировка доменов create_email_domain_block: Блокировка e-mail доменов create_ip_block: Создание правил для IP-адресов create_unavailable_domain: Добавление домена в список недоступных + create_user_role: Создать роль demote_user: Разжалование пользователей destroy_announcement: Удаление объявлений + destroy_canonical_email_block: Удалить блокировку эл. почты destroy_custom_emoji: Удаление эмодзи destroy_domain_allow: Отзыв разрешений для доменов destroy_domain_block: Разблокировка доменов @@ -264,6 +268,7 @@ ru: destroy_ip_block: Удаление правил для IP-адресов destroy_status: Удаление постов destroy_unavailable_domain: Исключение доменов из списка недоступных + destroy_user_role: Удалить роль disable_2fa_user: Отключение 2FA disable_custom_emoji: Отключение эмодзи disable_sign_in_token_auth_user: Отключение аутентификации по e-mail кодам у пользователей @@ -290,21 +295,26 @@ ru: update_announcement: Обновление объявлений update_custom_emoji: Обновление эмодзи update_domain_block: Изменение блокировки домена + update_ip_block: Обновить правило для IP-адреса update_status: Изменение постов + update_user_role: Обновить роль actions: approve_appeal_html: "%{name} одобрил апелляцию на умеренное решение от %{target}" approve_user_html: "%{name} утвердил(а) регистрацию %{target}" assigned_to_self_report_html: "%{name} назначил(а) себя для решения жалобы %{target}" change_email_user_html: "%{name} сменил(а) e-mail пользователя %{target}" + change_role_user_html: "%{name} изменил(а) роль %{target}" confirm_user_html: "%{name} подтвердил(а) e-mail адрес пользователя %{target}" create_account_warning_html: "%{name} выдал(а) предупреждение %{target}" create_announcement_html: "%{name} создал(а) новое объявление %{target}" + create_canonical_email_block_html: "%{name} заблокировал(а) эл. почту с хешем %{target}" create_custom_emoji_html: "%{name} загрузил(а) новый эмодзи %{target}" create_domain_allow_html: "%{name} разрешил(а) федерацию с доменом %{target}" create_domain_block_html: "%{name} заблокировал(а) домен %{target}" create_email_domain_block_html: "%{name} заблокировал(а) e-mail домен %{target}" create_ip_block_html: "%{name} создал(а) правило для IP %{target}" create_unavailable_domain_html: "%{name} приостановил доставку на узел %{target}" + create_user_role_html: "%{name} создал(а) роль %{target}" demote_user_html: "%{name} разжаловал(а) пользователя %{target}" destroy_announcement_html: "%{name} удалил(а) объявление %{target}" destroy_custom_emoji_html: "%{name} удалил(а) эмодзи %{target}" @@ -315,6 +325,7 @@ ru: destroy_ip_block_html: "%{name} удалил(а) правило для IP %{target}" destroy_status_html: "%{name} удалил(а) пост пользователя %{target}" destroy_unavailable_domain_html: "%{name} возобновил доставку на узел %{target}" + destroy_user_role_html: "%{name} удалил(а) роль %{target}" disable_2fa_user_html: "%{name} отключил(а) требование двухэтапной авторизации для пользователя %{target}" disable_custom_emoji_html: "%{name} отключил(а) эмодзи %{target}" disable_sign_in_token_auth_user_html: "%{name} отключил(а) аутентификацию по e-mail кодам для %{target}" @@ -342,7 +353,6 @@ ru: update_custom_emoji_html: "%{name} обновил(а) эмодзи %{target}" update_domain_block_html: "%{name} обновил(а) блокировку домена для %{target}" update_status_html: "%{name} изменил(а) пост пользователя %{target}" - deleted_status: "(удалённый пост)" empty: Журнал пуст. filter_by_action: Фильтр по действию filter_by_user: Фильтр по пользователю @@ -779,9 +789,6 @@ ru: desc_html: Показывать публичную ленту на приветственной странице title: Предпросмотр ленты title: Настройки сайта - trendable_by_default: - desc_html: Влияет на хэштеги, которые не были ранее запрещены - title: Разрешить добавление хештегов в список актульных без предварительной проверки trends: desc_html: Публично отобразить проверенные хэштеги, актуальные на данный момент title: Популярные хэштеги @@ -1139,7 +1146,7 @@ ru: csv: CSV domain_blocks: Доменные блокировки lists: Списки - mutes: Ваши игнорируемые + mutes: Ваши игнорируете storage: Ваши файлы featured_tags: add_new: Добавить @@ -1156,6 +1163,7 @@ ru: edit: add_keyword: Добавить ключевое слово keywords: Ключевые слова + statuses: Отдельные сообщения title: Изменить фильтр errors: deprecated_api_multiple_keywords: Эти параметры нельзя изменить из этого приложения, так как применяются к более чем одному ключевому слову фильтра. Используйте более последнее приложение или веб-интерфейс. @@ -1175,6 +1183,10 @@ ru: new: save: Сохранить новый фильтр title: Добавить фильтр + statuses: + back_to_filter: Вернуться к фильтру + batch: + remove: Удалить из фильтра footer: developers: Разработчикам more: Ещё… @@ -1292,7 +1304,7 @@ ru: title: Модерация move_handler: carry_blocks_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы заблокировали. - carry_mutes_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы добавили в список игнорирования. + carry_mutes_over_text: Этот пользователь перешёл с учётной записи %{acct}, которую вы игнорируете. copy_account_note_text: 'Этот пользователь переехал с %{acct}, вот ваша предыдущая заметка о нём:' notification_mailer: admin: @@ -1300,21 +1312,6 @@ ru: subject: "%{name} отправил жалобу" sign_up: subject: "%{name} зарегистрирован" - digest: - action: Просмотреть все уведомления - body: Вот краткая сводка сообщений, которые вы пропустили с последнего захода %{since} - mention: "%{name} упомянул(а) Вас в:" - new_followers_summary: - few: У вас появилось %{count} новых подписчика! Отлично! - many: У вас появилось %{count} новых подписчиков! Отлично! - one: Также, пока вас не было, у вас появился новый подписчик! Ура! - other: Также, пока вас не было, у вас появилось %{count} новых подписчиков! Отлично! - subject: - few: "%{count} новых уведомления с вашего последнего посещения 🐘" - many: "%{count} новых уведомлений с вашего последнего посещения 🐘" - one: "1 новое уведомление с вашего последнего посещения 🐘" - other: "%{count} новых уведомлений с вашего последнего посещения 🐘" - title: В ваше отсутствие… favourite: body: "%{name} добавил(а) ваш пост в избранное:" subject: "%{name} добавил(а) ваш пост в избранное" @@ -1568,7 +1565,7 @@ ru: enabled_hint: Автоматически удаляет ваши посты после того, как они достигли определённого возрастного порога, за некоторыми исключениями ниже. exceptions: Исключения explanation: Из-за того, что удаление постов — это ресурсоёмкий процесс, оно производится медленно со временем, когда сервер менее всего загружен. По этой причине, посты могут удаляться не сразу, а спустя определённое время, по достижению возрастного порога. - ignore_favs: Игнорировать отметки «избранного» + ignore_favs: Игнорировать избранное ignore_reblogs: Игнорировать продвижения interaction_exceptions: Исключения на основе взаимодействий interaction_exceptions_explanation: 'Обратите внимание: нет никаких гарантий, что посты будут удалены, после того, как они единожды перешли порог по отметкам «избранного» или продвижений.' diff --git a/config/locales/sc.yml b/config/locales/sc.yml index e6ee2bca9..60dcbbc9e 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -257,7 +257,6 @@ sc: create_ip_block_html: "%{name} at creadu una règula pro s'IP %{target}" demote_user_html: "%{name} at degradadu s'utente %{target}" destroy_announcement_html: "%{name} at cantzelladu s'annùntziu %{target}" - destroy_custom_emoji_html: "%{name} at cantzelladu s'emoji %{target}" destroy_domain_allow_html: "%{name} no at permìtidu sa federatzione cun su domìniu %{target}" destroy_domain_block_html: "%{name} at isblocadu su domìniu %{target}" destroy_email_domain_block_html: "%{name} at isblocadu su domìniu de posta eletrònica %{target}" @@ -285,7 +284,6 @@ sc: update_custom_emoji_html: "%{name} at atualizadu s'emoji %{target}" update_domain_block_html: "%{name} at atualizadu su blocu de domìniu pro %{target}" update_status_html: "%{name} at atualizadu sa publicatzione de %{target}" - deleted_status: "(istadu cantzelladu)" empty: Perunu registru agatadu. filter_by_action: Filtra pro atzione filter_by_user: Filtra pro utente @@ -571,9 +569,6 @@ sc: desc_html: Ammustra su ligàmene a sa lìnia de tempus pùblica in sa pàgina initziale e permite s'atzessu pro mèdiu de s'API a sa lìnia de tempus pùblica sena autenticatzione title: Permite s'atzessu no autenticadu a sa lìnia de tempus pùblica title: Cunfiguratzione de su logu - trendable_by_default: - desc_html: Tocat a is etichetas chi non siant istadas refudadas prima - title: Permite chi is etichetas divenant tendèntzia sena revisione pretzedente trends: desc_html: Ammustra in pùblicu is etichetas chi siant istadas revisionadas in passadu e chi oe siant in tendèntzia title: Etichetas de tendèntzia @@ -910,14 +905,6 @@ sc: carry_mutes_over_text: Custa persone s'est tramudada dae %{acct}, chi as postu a sa muda. copy_account_note_text: 'Custa persone s''est tramudada dae %{acct}, custas sunt is notas antepostas tuas chi ddi pertocant:' notification_mailer: - digest: - action: Ammustra totu is notìficas - body: Custu est unu resumu de su chi ti est sutzèdidu dae sa visita ùrtima tua su %{since} - mention: "%{name} t'at mentovadu in:" - new_followers_summary: - one: In prus, %{count} persone noa ti sighit dae cando fias assente. Incredìbile! - other: In prus, %{count} persones noas ti sighint dae cando fias assente. Incredìbile! - title: Durante s'ausèntzia tua... favourite: body: "%{name} at marcadu comente a preferidu s'istadu tuo:" subject: "%{name} at marcadu comente a preferidu s'istadu tuo" diff --git a/config/locales/si.yml b/config/locales/si.yml index 811cd7a47..fded19b17 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -288,7 +288,6 @@ si: create_unavailable_domain_html: "%{name} වසම %{target}වෙත බෙදා හැරීම නැවැත්වීය" demote_user_html: "%{name} පහත හෙලන ලද පරිශීලක %{target}" destroy_announcement_html: "%{name} මකා දැමූ නිවේදනය %{target}" - destroy_custom_emoji_html: "%{name} විනාශ වූ ඉමොජි %{target}" destroy_domain_allow_html: වසම %{target}සමඟ %{name} අවසර නොදුන් සම්මේලනය destroy_domain_block_html: "%{name} අවහිර නොකළ වසම %{target}" destroy_email_domain_block_html: "%{name} අවහිර නොකළ විද්‍යුත් තැපැල් වසම %{target}" @@ -323,7 +322,6 @@ si: update_custom_emoji_html: "%{name} යාවත්කාලීන කළ ඉමොජි %{target}" update_domain_block_html: "%{target}සඳහා %{name} යාවත්කාලීන කරන ලද වසම් වාරණ" update_status_html: "%{name} %{target}යාවත්කාලීන කරන ලද පළ කිරීම" - deleted_status: "(මකා දැමූ පළ කිරීම)" empty: ලඝු-සටහන් හමු නොවිණි. filter_by_action: ක්‍රියාව අනුව පෙරන්න filter_by_user: පරිශීලක අනුව පෙරන්න @@ -724,9 +722,6 @@ si: desc_html: ගොඩබෑමේ පිටුවේ පොදු කාලරාමුව වෙත සබැඳිය සංදර්ශනය කරන්න සහ සත්‍යාපනයකින් තොරව පොදු කාලරේඛාවට API ප්‍රවේශයට ඉඩ දෙන්න title: පොදු කාලරේඛාවට අනවසර පිවිසීමට ඉඩ දෙන්න title: අඩවියේ සැකසුම් - trendable_by_default: - desc_html: කලින් අවසර නොදුන් හැෂ් ටැග් වලට බලපායි - title: පෙර සමාලෝචනයකින් තොරව හැෂ් ටැග් වලට නැඹුරු වීමට ඉඩ දෙන්න trends: desc_html: දැනට ප්‍රවණතා ඇති කලින් සමාලෝචනය කළ අන්තර්ගතය ප්‍රසිද්ධියේ සංදර්ශන කරන්න title: ප්රවණතා @@ -1240,17 +1235,6 @@ si: subject: "%{name} වාර්තාවක් ඉදිරිපත් කළේය" sign_up: subject: "%{name} අත්සන් කර ඇත" - digest: - action: සියලුම දැනුම්දීම් බලන්න - body: "%{since}වෙනිදා ඔබගේ අවසන් සංචාරයේ සිට ඔබට මග හැරුණු පණිවිඩවල කෙටි සාරාංශයක් මෙන්න" - mention: "%{name} ඔබව සඳහන් කළේ:" - new_followers_summary: - one: එසේම, ඔබ බැහැරව සිටියදී එක් නව අනුගාමිකයෙකු ලබා ගෙන ඇත! Yay! - other: එසේම, ඔබ බැහැරව සිටියදී නව අනුගාමිකයින් %{count} ක් ලබාගෙන ඇත! අරුම පුදුම! - subject: - one: "ඔබගේ අවසන් සංචාරයේ සිට 1 නව දැනුම්දීමක් 🐘" - other: "ඔබගේ අවසන් සංචාරයේ සිට නව දැනුම්දීම් %{count} ක් 🐘" - title: ඔබ නොමැති විට... favourite: body: 'ඔබේ පළ කිරීම %{name}විසින් ප්‍රිය කරන ලදී:' subject: "%{name} ඔබගේ පළ කිරීම ප්‍රිය කරන ලදී" diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index cf450f825..559185c2c 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -253,6 +253,7 @@ ca: events: Esdeveniments activats url: URL del extrem 'no': 'No' + not_recommended: No recomanat recommended: Recomanat required: mark: "*" diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index bc84e0f39..61456e921 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -68,6 +68,11 @@ cs: with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány featured_tag: name: 'Nejspíš budete chtít použít jeden z těchto:' + filters: + action: Vyberte jakou akci provést, když příspěvek odpovídá filtru + actions: + hide: Úplně schovat filtrovaný obsah tak, jako by neexistoval + warn: Schovat filtrovaný obsah za varováním zmiňujicím název filtru form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: @@ -184,6 +189,7 @@ cs: setting_use_pending_items: Pomalý režim severity: Vážnost sign_in_token_attempt: Bezpečnostní kód + title: Název type: Typ importu username: Uživatelské jméno username_or_email: Uživatelské jméno nebo e-mail @@ -192,6 +198,10 @@ cs: with_dns_records: Zahrnout MX záznamy a IP adresy domény featured_tag: name: Hashtag + filters: + actions: + hide: Zcela skrýt + warn: Skrýt s varováním interactions: must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují must_be_following: Blokovat oznámení od lidí, které nesledujete diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 5077e16ff..5de688e12 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -253,6 +253,7 @@ da: events: Aktive begivenheder url: Endepunkts-URL 'no': Nej + not_recommended: Ikke anbefalet recommended: Anbefalet required: mark: "*" diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index bbeb610ec..0d712bf5f 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -22,9 +22,9 @@ de: suspend: Verhindert jegliche Interaktion von oder zu diesem Konto und löscht dessen Inhalt. Kann innerhalb von 30 Tagen rückgängig gemacht werden. warning_preset_id: Optional. Du kannst immer noch eigenen Text an das Ende der Vorlage hinzufügen announcement: - all_day: Wenn aktiviert werden nur die Daten des Zeitraums angezeigt + all_day: Wenn aktiviert, werden nur die Daten des Zeitraums angezeigt ends_at: Optional. Die Ankündigung wird zu diesem Zeitpunkt automatisch zurückgezogen - scheduled_at: Leer lassen um die Ankündigung sofort zu veröffentlichen + scheduled_at: Leer lassen, um die Ankündigung sofort zu veröffentlichen starts_at: Optional. Falls deine Ankündigung an einen bestimmten Zeitraum gebunden ist text: Du kannst die Toot-Syntax verwenden. Bitte beachte den Platz, den die Ankündigung auf dem Bildschirm des Benutzers einnehmen wird appeal: @@ -37,7 +37,7 @@ de: current_password: Aus Sicherheitsgründen gib bitte das Passwort des aktuellen Kontos ein current_username: Um das zu bestätigen, gib den Benutzernamen des aktuellen Kontos ein digest: Wenn du eine lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen zugeschickt, die du in deiner Abwesenheit empfangen hast - discoverable: Erlaube deinem Konto durch Empfehlungen, Trends und andere Funktionen von Fremden entdeckt zu werden + discoverable: Erlaube deinem Konto, durch Empfehlungen, Trends und andere Funktionen von Fremden entdeckt zu werden email: Du wirst eine Bestätigungs-E-Mail erhalten fields: Du kannst bis zu 4 Elemente auf deinem Profil anzeigen lassen, die als Tabelle dargestellt werden header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert @@ -58,14 +58,14 @@ de: setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge setting_show_application: Die Anwendung die du nutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt setting_use_blurhash: Die Farbverläufe basieren auf den Farben der versteckten Medien, aber verstecken jegliche Details - setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken anstatt automatisch zu scrollen + setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen username: Dein Benutzername wird auf %{domain} einzigartig sein whole_word: Wenn das Schlagwort nur aus Buchstaben und Zahlen besteht, wird es nur angewendet, wenn es dem ganzen Wort entspricht domain_allow: - domain: Diese Domain kann Daten von diesem Server abrufen und eingehende Daten werden verarbeitet und gespeichert + domain: Diese Domain kann Daten von diesem Server abrufen, und eingehende Daten werden verarbeitet und gespeichert email_domain_block: domain: Dies kann der Domänenname sein, der in der E-Mail-Adresse oder dem von ihm verwendeten MX-Eintrag angezeigt wird. Er wird bei der Anmeldung überprüft. - with_dns_records: Ein Versuch die DNS-Einträge der Domain aufzulösen wurde unternommen und diese Ergebnisse werden unter anderem auch geblockt + with_dns_records: Ein Versuch, die DNS-Einträge der Domain aufzulösen, wurde unternommen, und diese Ergebnisse werden unter anderem auch blockiert featured_tag: name: 'Du möchtest vielleicht einen von diesen benutzen:' filters: @@ -82,7 +82,7 @@ de: ip_block: comment: Optional. Denke daran, warum du diese Regel hinzugefügt hast. expires_in: IP-Adressen sind eine endliche Ressource, sie werden manchmal geteilt und werden ab und zu ausgetauscht. Aus diesem Grund werden unbestimmte IP-Blöcke nicht empfohlen. - ip: Gebe eine IPv4- oder IPv6-Adresse an. Du kannst ganze Bereiche mit der CIDR-Syntax blockieren. Achte darauf, dass du dich nicht aussperrst! + ip: Gib eine IPv4- oder IPv6-Adresse an. Du kannst ganze Bereiche mit der CIDR-Syntax blockieren. Achte darauf, dass du dich nicht aussperrst! severities: no_access: Zugriff auf alle Ressourcen blockieren sign_up_block: Neue Anmeldungen werden nicht möglich sein @@ -185,7 +185,7 @@ de: setting_hide_network: Netzwerk ausblenden setting_noindex: Suchmaschinen-Indexierung verhindern setting_reduce_motion: Bewegung in Animationen verringern - setting_show_application: Anwendung preisgeben, die benutzt wurde um Beiträge zu versenden + setting_show_application: Anwendung preisgeben, die benutzt wurde, um Beiträge zu versenden setting_system_font_ui: Standardschriftart des Systems verwenden setting_theme: Theme setting_trends: Heutige Trends anzeigen @@ -200,7 +200,7 @@ de: username_or_email: Profilname oder E-Mail whole_word: Ganzes Wort email_domain_block: - with_dns_records: MX-Einträge und IPs der Domain einbeziehen + with_dns_records: MX-Einträge und IP-Adressen der Domain einbeziehen featured_tag: name: Hashtag filters: @@ -224,7 +224,7 @@ de: sign_up_requires_approval: Anmeldungen begrenzen severity: Regel notification_emails: - appeal: Jemand hat Einspruch an eine Moderatorentscheidung + appeal: Jemand hat Einspruch gegen eine Moderatorentscheidung eingelegt digest: Kurzfassungen über E-Mail senden favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert follow: E-Mail senden, wenn mir jemand folgt @@ -237,10 +237,10 @@ de: rule: text: Regel tag: - listable: Erlaube diesem Hashtag im Profilverzeichnis zu erscheinen + listable: Erlaube diesem Hashtag, im Profilverzeichnis zu erscheinen name: Hashtag - trendable: Erlaube es diesen Hashtag in den Trends erscheinen zu lassen - usable: Beiträge erlauben, diesen Hashtag zu verwenden + trendable: Erlaube es, diesen Hashtag in den Trends erscheinen zu lassen + usable: Beiträgen erlauben, diesen Hashtag zu verwenden user: role: Rolle user_role: @@ -253,11 +253,12 @@ de: events: Aktivierte Ereignisse url: Endpunkt-URL 'no': Nein + not_recommended: Nicht empfohlen recommended: Empfohlen required: mark: "*" text: Pflichtfeld title: sessions: - webauthn: Verwende einer deiner Sicherheitsschlüssel zum Anmelden + webauthn: Verwende einen deiner Sicherheitsschlüssel zum Anmelden 'yes': Ja diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 53b25da8e..e11692516 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -253,6 +253,7 @@ es-AR: events: Eventos habilitados url: Dirección web del punto final 'no': 'No' + not_recommended: No recomendado recommended: Opción recomendada required: mark: "*" diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 3128209e8..327815927 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -85,6 +85,7 @@ es-MX: ip: Introduzca una dirección IPv4 o IPv6. Puede bloquear rangos completos usando la sintaxis CIDR. ¡Tenga cuidado de no quedarse fuera! severities: no_access: Bloquear acceso a todos los recursos + sign_up_block: Los nuevos registros se deshabilitarán sign_up_requires_approval: Nuevos registros requerirán su aprobación severity: Elegir lo que pasará con las peticiones desde esta IP rule: @@ -219,6 +220,7 @@ es-MX: ip: IP severities: no_access: Bloquear acceso + sign_up_block: Bloquear registros sign_up_requires_approval: Limitar registros severity: Regla notification_emails: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 25efe37cd..03357e44b 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -253,6 +253,7 @@ es: events: Eventos habilitados url: URL de Endpoint 'no': 'No' + not_recommended: No recomendado recommended: Recomendado required: mark: "*" diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 189f51ab6..53e6a52b3 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -85,6 +85,7 @@ fi: ip: Kirjoita IPv4- tai IPv6-osoite. Voit estää kokonaisia alueita käyttämällä CIDR-syntaksia. Varo, että et lukitse itseäsi! severities: no_access: Estä pääsy kaikkiin resursseihin + sign_up_block: Uudet kirjautumiset eivät ole mahdollisia sign_up_requires_approval: Uudet rekisteröitymiset edellyttävät hyväksyntääsi severity: Valitse, mitä tapahtuu tämän IP-osoitteen pyynnöille rule: @@ -219,6 +220,7 @@ fi: ip: IP severities: no_access: Estä pääsy + sign_up_block: Estä kirjautumiset sign_up_requires_approval: Rajoita rekisteröitymisiä severity: Sääntö notification_emails: diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index a9d801409..3b050eeee 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -253,6 +253,7 @@ gl: events: Eventos activados url: URL do extremo 'no': Non + not_recommended: Non é recomendable recommended: Recomendado required: mark: "*" diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index fe0ed1a77..22b5d8480 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -85,6 +85,7 @@ he: ip: נא להכניס כתובת IPv4 או IPv6. ניתן לחסום תחומים שלמים על ידי שימוש בתחביר CIDR. זהירות לא לנעול את עצמכם בחוץ! severities: no_access: חסימת גישה לכל המשאבים + sign_up_block: הרשמות חדשות לא יאופשרו sign_up_requires_approval: הרשמות חדשות ידרשו את אישורך severity: נא לבחור מה יקרה לבקשות מכתובת IP זו rule: @@ -219,6 +220,7 @@ he: ip: IP severities: no_access: חסימת גישה + sign_up_block: חסימת הרשמות sign_up_requires_approval: הגבלת הרשמות severity: כלל notification_emails: @@ -251,6 +253,7 @@ he: events: אירועים מאופשרים url: כתובת URL של נקודת הקצה 'no': לא + not_recommended: לא מומלצים recommended: מומלץ required: mark: "*" diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index df19f4aa7..16465ff79 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -80,7 +80,7 @@ hu: invite_request: text: Ez segít nekünk átnézni a jelentkezésedet ip_block: - comment: Opcionális. Emlékeztető, hogy miért is vetted fel ezt a szabályt. + comment: Nem kötelező. Emlékeztető, hogy miért is vetted fel ezt a szabályt. expires_in: Az IP címek korlátos erőforrások, ezért néha meg vannak osztva és gyakran gazdát is cserélnek. Ezért a korlátlan IP tiltások használatát nem javasoljuk. ip: Írj be egy IPv4 vagy IPv6 címet. A CIDR formátum használatával teljes tartományokat tilthatsz ki. Légy óvatos, hogy magadat véletlenül se zárd ki! severities: @@ -253,6 +253,7 @@ hu: events: Engedélyezett események url: Végponti URL 'no': Nem + not_recommended: Nem ajánlott recommended: Ajánlott required: mark: "*" diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 743c8964a..bb5452471 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -85,6 +85,7 @@ io: ip: Tipez adreso di IPv4 o IPv6. Vu povas restrikar tota porteo per sintaxo CIDR. Sorgemez por ke vu ne klefklozas su! severities: no_access: Restriktez aceso a omna moyeni + sign_up_block: Nova registrago ne esos posibla sign_up_requires_approval: Nova registro bezonos vua aprobo severity: Selektez quo eventos kun demandi de ca IP rule: @@ -219,6 +220,7 @@ io: ip: IP severities: no_access: Depermisez aceso + sign_up_block: Obstruktez registragi sign_up_requires_approval: Limitigez registri severity: Regulo notification_emails: @@ -251,6 +253,7 @@ io: events: Aktivigita eventi url: URL di finpunto 'no': Ne + not_recommended: Ne rekomendesas recommended: Rekomendito required: mark: "*" diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 60cbb3341..bdc9c0380 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -233,13 +233,13 @@ is: pending_account: Nýr notandaaðgangur þarfnast yfirferðar reblog: Einhver endurbirti færsluna þína report: Ný kæra hefur verið send inn - trending_tag: Ný tilhneiging krefst yfirferðar + trending_tag: Nýtt vinsælt efni krefst yfirferðar rule: text: Regla tag: listable: Leyfa þessu myllumerki að birtast í leitum og í persónusniðamöppunni name: Myllumerki - trendable: Leyfa þessu myllumerki að birtast undir tilhneigingum + trendable: Leyfa þessu myllumerki að birtast undir vinsælu efni usable: Leyfa færslum að nota þetta myllumerki user: role: Hlutverk @@ -253,6 +253,7 @@ is: events: Virkjaðir atburðir url: Slóð á endapunkt 'no': Nei + not_recommended: Ekki mælt með þessu recommended: Mælt með required: mark: "*" diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 50a4caae9..aeabbcdfd 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -253,6 +253,7 @@ it: events: Eventi abilitati url: URL endpoint 'no': 'No' + not_recommended: Non consigliato recommended: Consigliato required: mark: "*" diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 5469a7c04..fe8e010cf 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -253,6 +253,7 @@ ko: events: 활성화된 이벤트 url: 엔드포인트 URL 'no': 아니오 + not_recommended: 추천하지 않음 recommended: 추천함 required: mark: "*" diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index d08b4bf05..e4b0f0759 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -44,7 +44,7 @@ ku: inbox_url: URLyê di rûpela pêşî de guhêrkerê ku tu dixwazî bi kar bînî jê bigire irreversible: Şandiyên parzûnkirî êdî bê veger wenda bibe, heger parzûn paşê were rakirin jî nabe locale: Zimanê navrûyê bikarhêner, agahdarîyên e-name û pêl kirin - locked: Bi destan daxwazên şopê hilbijêrîne da ku kî bikaribe te bişopîne + locked: Bi pejirandina daxwazên şopandinê, kî dikare te bişopîne bi destan kontrol bike password: Herî kêm 8 tîpan bi kar bîne phrase: Ji rewşa nivîsê tîpên girdek/hûrdek an jî ji hişyariya naveroka ya şandiyê wek serbixwe wê were hevbeş kirin scopes: |- @@ -255,6 +255,7 @@ ku: events: Bûyerên çalakkirî url: Girêdana xala dawîbûnê 'no': Na + not_recommended: Nayê pêşniyarkirin recommended: Pêşniyarkirî required: mark: "*" diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index d73da1c2a..cff70297e 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -253,6 +253,7 @@ lv: events: Iespējotie notikumi url: Galapunkta URL 'no': Nē + not_recommended: Nav ieteicams recommended: Ieteicams required: mark: "*" diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 91a472b21..91ded57a6 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -85,6 +85,7 @@ pl: ip: Wprowadź adres IPv4 lub IPv6. Możesz zablokować całe zakresy za pomocą składni CIDR. Uważaj, aby się nie zablokować! severities: no_access: Zablokuj dostęp do wszystkich zasobów + sign_up_block: Nowe rejestracje nie będą możliwe sign_up_requires_approval: Nowe rejestracje będą wymagać twojej zgody severity: Wybierz co ma się stać z żadaniami z tego adresu IP rule: @@ -251,6 +252,7 @@ pl: events: Włączone zdarzenia url: Endpoint URL 'no': Nie + not_recommended: Niezalecane recommended: Polecane required: mark: "*" diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index ab6c2e3ff..8c56bd2d2 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -253,6 +253,7 @@ pt-PT: events: Eventos ativados url: URL do Endpoint 'no': Não + not_recommended: Não recomendado recommended: Recomendado required: mark: "*" diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 8f897c917..a9042b25d 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -253,6 +253,7 @@ ru: events: Включенные события url: Endpoint URL 'no': Нет + not_recommended: Не рекомендуется recommended: Рекомендуем required: mark: "*" diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 854670fe5..2724b1727 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -253,6 +253,7 @@ sl: events: Omogočeni dogodki url: URL končne točke 'no': Ne + not_recommended: Ni priporočeno recommended: Priporočeno required: mark: "*" diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 8a23d1f6b..27ad0abd5 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -253,6 +253,7 @@ th: events: เหตุการณ์ที่เปิดใช้งาน url: URL ปลายทาง 'no': ไม่ + not_recommended: ไม่แนะนำ recommended: แนะนำ required: mark: "*" diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index f63ad13aa..20bb03cd4 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -253,6 +253,7 @@ tr: events: Etkin olaylar url: Uç nokta URL’si 'no': Hayır + not_recommended: Önerilmez recommended: Önerilen required: mark: "*" diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index df9f1fb4d..3f12b6d6e 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -253,6 +253,7 @@ uk: events: Увімкнені події url: URL кінцевої точки 'no': Ні + not_recommended: Не рекомендовано recommended: Рекомендовано required: mark: "*" diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 143064c5d..664974e4e 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -253,6 +253,7 @@ vi: events: Những sự kiện đã bật url: URL endpoint 'no': Tắt + not_recommended: Không đề xuất recommended: Đề xuất required: mark: "*" diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 0c3c28c67..0239304b1 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -33,7 +33,7 @@ zh-CN: autofollow: 通过邀请链接注册的用户将会自动关注你 avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px bot: 来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控 - context: 过滤器的应用场景 + context: 过滤器的应用环境 current_password: 为了安全起见,请输入当前账号的密码 current_username: 请输入当前账号的用户名以确认 digest: 仅在你长时间未登录,且收到了私信时发送 @@ -146,7 +146,7 @@ zh-CN: chosen_languages: 语言过滤 confirm_new_password: 确认新密码 confirm_password: 确认密码 - context: 过滤器场景 + context: 过滤器环境 current_password: 当前密码 data: 数据文件 discoverable: 在本站用户目录中收录此账号 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 3691af892..b5eb3e8c1 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -253,6 +253,7 @@ zh-TW: events: 已啟用的事件 url: 端點 URL 'no': 否 + not_recommended: 不建議 recommended: 建議 required: mark: "*" diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 7b02930c2..4ed611b18 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -255,7 +255,6 @@ sk: change_email_user_html: "%{name} zmenil/a emailovú adresu užívateľa %{target}" confirm_user_html: "%{name} potvrdil/a emailovú adresu používateľa %{target}" create_account_warning_html: "%{name} poslal/a upozornenie užívateľovi %{target}" - deleted_status: "(zmazaný príspevok)" filter_by_action: Filtruj podľa úkonu filter_by_user: Trieď podľa užívateľa title: Kontrólny záznam @@ -575,9 +574,6 @@ sk: desc_html: Zobraziť verejnú nástenku na hlavnej stránke title: Náhľad nástenky title: Nastavenia stránky - trendable_by_default: - desc_html: Ovplyvňuje haštagy ktoré predtým neboli zakázané - title: Dovoľ haštagom zobrazovať sa ako populárne, bez predchodzieho posudzovania trends: desc_html: Verejne zobraz už schválené haštagy, ktoré práve trendujú title: Populárne haštagy @@ -913,16 +909,6 @@ sk: carry_blocks_over_text: Tento užívateľ sa presunul z účtu %{acct}, ktorý si mal/a zablokovaný. carry_mutes_over_text: Tento užívateľ sa presunul z účtu %{acct}, ktorý si mal/a stíšený. notification_mailer: - digest: - action: Zobraziť všetky notifikácie - body: Tu nájdete krátky súhrn správ ktoré ste zmeškali od svojej poslednj návštevi od %{since} - mention: "%{name} ťa spomenul/a v:" - new_followers_summary: - few: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá! - many: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá! - one: A ešte, kým si bol/a preč, si získal/a jedného nového následovateľa! Hurá! - other: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá! - title: Zatiaľ čo si bol/a preč… favourite: body: 'Tvoj príspevok bol uložený medzi obľúbené užívateľa %{name}:' subject: "%{name} si obľúbil/a tvoj príspevok" diff --git a/config/locales/sl.yml b/config/locales/sl.yml index ea7b8e6ba..1b1aa1b6a 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -245,17 +245,21 @@ sl: approve_user: Odobri uporabnika assigned_to_self_report: Dodeli prijavo change_email_user: Spremeni e-poštni naslov uporabnika + change_role_user: Spremeni vlogo uporabnika confirm_user: Potrdi uporabnika create_account_warning: Ustvari opozorilo create_announcement: Ustvari obvestilo + create_canonical_email_block: Ustvari blokado e-pošte create_custom_emoji: Ustvari emodži po meri create_domain_allow: Ustvari odobritev domene create_domain_block: Ustvari blokado domene create_email_domain_block: Ustvari blokado domene e-pošte create_ip_block: Ustvari pravilo IP create_unavailable_domain: Ustvari domeno, ki ni na voljo + create_user_role: Ustvari vlogo demote_user: Ponižaj uporabnika destroy_announcement: Izbriši obvestilo + destroy_canonical_email_block: Izbriši blokado e-pošte destroy_custom_emoji: Izbriši emodži po meri destroy_domain_allow: Izbriši odobritev domene destroy_domain_block: Izbriši blokado domene @@ -264,6 +268,7 @@ sl: destroy_ip_block: Izbriši pravilo IP destroy_status: Izbriši objavo destroy_unavailable_domain: Izbriši domeno, ki ni na voljo + destroy_user_role: Uniči vlogo disable_2fa_user: Onemogoči disable_custom_emoji: Onemogoči emodži po meri disable_sign_in_token_auth_user: Onemogoči overjanje z žetonom po e-pošti za uporabnika @@ -290,24 +295,30 @@ sl: update_announcement: Posodobi objavo update_custom_emoji: Posodobi emodži po meri update_domain_block: Posodobi blokado domene + update_ip_block: Posodobi pravilo IP update_status: Posodobi objavo + update_user_role: Posodobi vlogo actions: approve_appeal_html: "%{name} je ugodil pritožbi uporabnika %{target} na moderatorsko odločitev" approve_user_html: "%{name} je odobril/a registracijo iz %{target}" assigned_to_self_report_html: "%{name} je dodelil/a prijavo %{target} sebi" change_email_user_html: "%{name} je spremenil/a naslov e-pošte uporabnika %{target}" + change_role_user_html: "%{name} je spremenil/a vlogo %{target}" confirm_user_html: "%{name} je potrdil/a naslov e-pošte uporabnika %{target}" create_account_warning_html: "%{name} je poslal/a opozorilo %{target}" create_announcement_html: "%{name} je ustvarila/a novo obvestilo %{target}" + create_canonical_email_block_html: "%{name} je dal/a na črni seznam e-pošto s ključnikom %{target}" create_custom_emoji_html: "%{name} je posodobil/a emotikone %{target}" create_domain_allow_html: "%{name} je dovolil/a federacijo z domeno %{target}" create_domain_block_html: "%{name} je blokiral/a domeno %{target}" create_email_domain_block_html: "%{name} je dal/a na črni seznam e-pošto domene %{target}" create_ip_block_html: "%{name} je ustvaril/a pravilo za IP %{target}" create_unavailable_domain_html: "%{name} je prekinil/a dostavo v domeno %{target}" + create_user_role_html: "%{name} je ustvaril/a vlogo %{target}" demote_user_html: "%{name} je ponižal/a uporabnika %{target}" destroy_announcement_html: "%{name} je izbrisal/a obvestilo %{target}" - destroy_custom_emoji_html: "%{name} je uničil/a emotikone %{target}" + destroy_canonical_email_block_html: "%{name} je odstranil/a s črnega seznama e-pošto s ključnikom %{target}" + destroy_custom_emoji_html: "%{name} je izbrisal/a emotikon %{target}" destroy_domain_allow_html: "%{name} ni dovolil/a federacije z domeno %{target}" destroy_domain_block_html: "%{name} je odblokiral/a domeno %{target}" destroy_email_domain_block_html: "%{name} je odblokiral/a e-pošto domene %{target}" @@ -315,6 +326,7 @@ sl: destroy_ip_block_html: "%{name} je izbrisal/a pravilo za IP %{target}" destroy_status_html: "%{name} je odstranil/a objavo uporabnika %{target}" destroy_unavailable_domain_html: "%{name} je nadaljeval/a dostav v domeno %{target}" + destroy_user_role_html: "%{name} je izbrisal/a vlogo %{target}" disable_2fa_user_html: "%{name} je onemogočil/a dvofaktorsko zahtevo za uporabnika %{target}" disable_custom_emoji_html: "%{name} je onemogočil/a emotikone %{target}" disable_sign_in_token_auth_user_html: "%{name} je onemogočil/a overjanje z žetonom po e-pošti za uporabnika %{target}" @@ -341,8 +353,9 @@ sl: update_announcement_html: "%{name} je posodobil/a objavo %{target}" update_custom_emoji_html: "%{name} je posodobil/a emotikone %{target}" update_domain_block_html: "%{name} je posodobil/a domenski blok za %{target}" + update_ip_block_html: "%{name} je spremenil/a pravilo za IP %{target}" update_status_html: "%{name} je posodobil/a objavo uporabnika %{target}" - deleted_status: "(izbrisana objava)" + update_user_role_html: "%{name} je spremenil/a vlogo %{target}" empty: Ni najdenih zapisnikov. filter_by_action: Filtriraj po dejanjih filter_by_user: Filtriraj po uporabnikih @@ -827,8 +840,8 @@ sl: title: Predogled časovnice title: Nastavitve strani trendable_by_default: - desc_html: Velja za ključnike, ki niso bili poprej onemogočeni - title: Dovoli, da so ključniki v trendu brez predhodnega pregleda + desc_html: Določeno vsebino v trendu je še vedno možno izrecno prepovedati + title: Dovoli trende brez predhodnega pregleda trends: desc_html: Javno prikaži poprej pregledano vsebino, ki je trenutno v trendu title: Trendi @@ -1222,7 +1235,7 @@ sl: add_keyword: Dodaj ključno besedo keywords: Ključne besede statuses: Posamezne objave - statuses_hint_html: Ta filter se nanaša na posamezne objave ne glede na to, ali se ujemajo s spodnjimi ključnimi besedami. Te objave lahko pregledate in jih odstranite iz filtra, če kliknete tukaj. + statuses_hint_html: Ta filter velja za izbrane posamezne objave, ne glede na to, ali se ujemajo s spodnjimi ključnimi besedami. Preglejte ali odstarnite objave iz filtra. title: Uredite filter errors: deprecated_api_multiple_keywords: Teh parametrov ni mogoče spremeniti iz tega programa, ker veljajo za več kot eno ključno besedo filtra. Uporabite novejšo izdaj programa ali spletni vmesnik. @@ -1266,12 +1279,28 @@ sl: trending_now: Zdaj v trendu generic: all: Vse + all_items_on_page_selected_html: + few: Na tej strani so izbrani %{count} elementi. + one: Na tej strani je izbran %{count} element. + other: Na tej strani je izbranih %{count} elementov. + two: Na tej strani sta izbrana %{count} elementa. + all_matching_items_selected_html: + few: Izbrani so %{count} elementi, ki ustrezajo vašemu iskanju. + one: Izbran je %{count} element, ki ustreza vašemu iskanju. + other: Izbranih je %{count} elementov, ki ustrezajo vašemu iskanju. + two: Izbrana sta %{count} elementa, ki ustrezata vašemu iskanju. changes_saved_msg: Spremembe so uspešno shranjene! copy: Kopiraj delete: Izbriši + deselect: Prekliči ves izbor none: Brez order_by: Razvrsti po save_changes: Shrani spremembe + select_all_matching_items: + few: Izberite %{count} elemente, ki ustrezajo vašemu iskanju. + one: Izberite %{count} element, ki ustreza vašemu iskanju. + other: Izberite %{count} elementov, ki ustrezajo vašemu iskanju. + two: Izberite %{count} elementa, ki ustrezata vašemu iskanju. today: danes validation_errors: few: Nekaj še ni čisto v redu! Spodaj si oglejte %{count} napake @@ -1384,21 +1413,6 @@ sl: subject: "%{name} je oddal/a prijavo" sign_up: subject: "%{name} se je vpisal/a" - digest: - action: Prikaži vsa obvestila - body: Tukaj je kratek povzetek sporočil, ki ste jih zamudili od vašega zadnjega obiska v %{since} - mention: "%{name} vas je omenil/a v:" - new_followers_summary: - few: Prav tako ste pridobili %{count} nove sledilce, ko ste bili odsotni! Juhu! - one: Prav tako ste pridobili enega novega sledilca, ko ste bili odsotni! Juhu! - other: Prav tako ste pridobili %{count} novih sledilcev, ko ste bili odsotni! Juhu! - two: Prav tako ste pridobili %{count} nova sledilca, ko ste bili odsotni! Juhu! - subject: - few: "%{count} nova obvestila od vašega zadnjega obiska 🐘" - one: "%{count} novo obvestilo od vašega zadnjega obiska 🐘" - other: "%{count} novih obvestil od vašega zadnjega obiska 🐘" - two: "%{count} novi obvestili od vašega zadnjega obiska 🐘" - title: V vaši odsotnosti... favourite: body: "%{name} je vzljubil/a vašo objavo:" subject: "%{name} je vzljubil/a vašo objavo" diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 8a91cc6f4..ef72bfbdf 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -297,7 +297,6 @@ sq: create_unavailable_domain_html: "%{name} ndali dërgimin drejt përkatësisë %{target}" demote_user_html: "%{name} zhgradoi përdoruesin %{target}" destroy_announcement_html: "%{name} fshiu lajmërimin për %{target}" - destroy_custom_emoji_html: "%{name} asgjësoi emoxhin %{target}" destroy_domain_allow_html: "%{name} hoqi lejimin për federim me %{target}" destroy_domain_block_html: "%{name} zhbllokoi përkatësinë %{target}" destroy_email_domain_block_html: "%{name} hoqi bllokimin për përkatësinë email %{target}" @@ -332,7 +331,6 @@ sq: update_custom_emoji_html: "%{name} përditësoi emoxhin %{target}" update_domain_block_html: "%{name} përditësoi bllokimin e përkatësish për %{target}" update_status_html: "%{name} përditësoi gjendjen me %{target}" - deleted_status: "(fshiu gjendjen)" empty: S’u gjetën regjistra. filter_by_action: Filtroji sipas veprimit filter_by_user: Filtroji sipas përdoruesit @@ -791,9 +789,6 @@ sq: desc_html: Shfaqni lidhje te rrjedhë kohore publike në faqen hyrëse dhe lejoni te rrjedhë kohore publike hyrje API pa mirëfilltësim title: Lejo në rrjedhë kohore publike hyrje pa mirëfilltësim title: Rregullime sajti - trendable_by_default: - desc_html: Prek hashtag-ë që nuk kanë qenë të palejuar më parë - title: Lejo hashtag-ë në prirje pa paraparje paraprake trends: desc_html: Shfaqni publikisht hashtag-ë të shqyrtuar më parë që janë popullorë tani title: Hashtag-ë popullorë tani @@ -1310,17 +1305,6 @@ sq: subject: "%{name} parashtroi një raportim" sign_up: subject: "%{name} u regjistrua" - digest: - action: Shihini krejt njoftimet - body: Ja një përmbledhje e shkurtër e mesazheve që keni humbur që nga vizita juaj e fundit më %{since} - mention: "%{name} ju ka përmendur te:" - new_followers_summary: - one: Veç kësaj, u bëtë me një ndjekës të ri, teksa s’ishit këtu! Ëhë! - other: Veç kësaj, u bëtë me %{count} ndjekës të rinj, teksa s’ishit këtu! Shkëlqyeshëm! - subject: - one: "1 njoftim i ri që nga vizita juaj e fundit 🐘" - other: "%{count} njoftime të reja që nga vizita juaj e fundit 🐘" - title: Gjatë mungesës tuaj… favourite: body: 'Gjendja juaj u parapëlqye nga %{name}:' subject: "%{name} parapëlqeu gjendjen tuaj" diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index a94893b9e..692db061a 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -315,13 +315,6 @@ sr-Latn: moderation: title: Moderacija notification_mailer: - digest: - 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! - one: Dobili ste jednog novog pratioca! Jeee! - other: Dobili ste %{count} novih pratioca! Sjajno! favourite: body: "%{name} je postavio kao omiljen Vaš status:" subject: "%{name} je postavio kao omiljen Vaš status" diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 2042fc440..e6cbb26d2 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -146,7 +146,6 @@ sr: warn: Упозори web: Веб action_logs: - deleted_status: "(обрисан статус)" title: Записник custom_emojis: by_domain: Домен @@ -504,15 +503,6 @@ sr: moderation: title: Модерација notification_mailer: - digest: - action: Погледајте сва обавештења - body: Ево кратак преглед порука које сте пропустили од последње посете од %{since} - mention: "%{name} Вас је поменуо у:" - new_followers_summary: - few: Добили сте %{count} нова пратиоца! Сјајно! - one: Добили сте једног новог пратиоца! Јеее! - other: Добили сте %{count} нових пратиоца! Сјајно! - title: Док нисте били ту... favourite: body: "%{name} је поставио као омиљен Ваш статус:" subject: "%{name} је поставио као омиљен Ваш статус" diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 1e238b196..77a44b75d 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -258,7 +258,6 @@ sv: create_domain_block_html: "%{name} blockerade domänen %{target}" create_email_domain_block_html: "%{name} svartlistade e-postdomän %{target}" create_ip_block_html: "%{name} skapade regel för IP %{target}" - destroy_custom_emoji_html: "%{name} förstörde emoji %{target}" destroy_domain_block_html: "%{name} avblockerade domänen %{target}" destroy_email_domain_block_html: "%{name} avblockerade e-postdomän %{target}" destroy_ip_block_html: "%{name} tog bort regel för IP %{target}" @@ -282,7 +281,6 @@ sv: update_custom_emoji_html: "%{name} uppdaterade emoji %{target}" update_domain_block_html: "%{name} uppdaterade domän-block för %{target}" update_status_html: "%{name} uppdaterade inlägget av %{target}" - deleted_status: "(raderad status)" empty: Inga loggar hittades. filter_by_action: Filtrera efter åtgärd filter_by_user: Filtrera efter användare @@ -912,14 +910,6 @@ sv: admin: sign_up: subject: "%{name} registrerade sig" - digest: - action: Visa alla aviseringar - body: Här är en kort sammanfattning av de meddelanden du missade sedan ditt senaste besök på %{since} - mention: "%{name} nämnde dig i:" - new_followers_summary: - one: Du har också förvärvat en ny följare! Jippie! - other: Du har också fått %{count} nya följare medans du var iväg! Otroligt! - title: I din frånvaro... favourite: body: 'Din status favoriserades av %{name}:' subject: "%{name} favoriserade din status" diff --git a/config/locales/th.yml b/config/locales/th.yml index 7f3c25ff1..125bb3062 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -230,17 +230,21 @@ th: approve_user: อนุมัติผู้ใช้ assigned_to_self_report: มอบหมายรายงาน change_email_user: เปลี่ยนอีเมลสำหรับผู้ใช้ + change_role_user: เปลี่ยนบทบาทของผู้ใช้ confirm_user: ยืนยันผู้ใช้ create_account_warning: สร้างคำเตือน create_announcement: สร้างประกาศ + create_canonical_email_block: สร้างการปิดกั้นอีเมล create_custom_emoji: สร้างอีโมจิที่กำหนดเอง create_domain_allow: สร้างการอนุญาตโดเมน create_domain_block: สร้างการปิดกั้นโดเมน create_email_domain_block: สร้างการปิดกั้นโดเมนอีเมล create_ip_block: สร้างกฎ IP create_unavailable_domain: สร้างโดเมนที่ไม่พร้อมใช้งาน + create_user_role: สร้างบทบาท demote_user: ลดขั้นผู้ใช้ destroy_announcement: ลบประกาศ + destroy_canonical_email_block: ลบการปิดกั้นอีเมล destroy_custom_emoji: ลบอีโมจิที่กำหนดเอง destroy_domain_allow: ลบการอนุญาตโดเมน destroy_domain_block: ลบการปิดกั้นโดเมน @@ -249,6 +253,7 @@ th: destroy_ip_block: ลบกฎ IP destroy_status: ลบโพสต์ destroy_unavailable_domain: ลบโดเมนที่ไม่พร้อมใช้งาน + destroy_user_role: ทำลายบทบาท disable_2fa_user: ปิดใช้งาน 2FA disable_custom_emoji: ปิดใช้งานอีโมจิที่กำหนดเอง disable_sign_in_token_auth_user: ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับผู้ใช้ @@ -275,12 +280,15 @@ th: update_announcement: อัปเดตประกาศ update_custom_emoji: อัปเดตอีโมจิที่กำหนดเอง update_domain_block: อัปเดตการปิดกั้นโดเมน + update_ip_block: อัปเดตกฎ IP update_status: อัปเดตโพสต์ + update_user_role: อัปเดตบทบาท actions: approve_appeal_html: "%{name} ได้อนุมัติการอุทธรณ์การตัดสินใจในการควบคุมจาก %{target}" approve_user_html: "%{name} ได้อนุมัติการลงทะเบียนจาก %{target}" assigned_to_self_report_html: "%{name} ได้มอบหมายรายงาน %{target} ให้กับตนเอง" change_email_user_html: "%{name} ได้เปลี่ยนที่อยู่อีเมลของผู้ใช้ %{target}" + change_role_user_html: "%{name} ได้เปลี่ยนบทบาทของ %{target}" confirm_user_html: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}" create_account_warning_html: "%{name} ได้ส่งคำเตือนไปยัง %{target}" create_announcement_html: "%{name} ได้สร้างประกาศใหม่ %{target}" @@ -290,9 +298,10 @@ th: create_email_domain_block_html: "%{name} ได้ปิดกั้นโดเมนอีเมล %{target}" create_ip_block_html: "%{name} ได้สร้างกฎสำหรับ IP %{target}" create_unavailable_domain_html: "%{name} ได้หยุดการจัดส่งไปยังโดเมน %{target}" + create_user_role_html: "%{name} ได้สร้างบทบาท %{target}" demote_user_html: "%{name} ได้ลดขั้นผู้ใช้ %{target}" destroy_announcement_html: "%{name} ได้ลบประกาศ %{target}" - destroy_custom_emoji_html: "%{name} ได้ทำลายอีโมจิ %{target}" + destroy_custom_emoji_html: "%{name} ได้ลบอีโมจิ %{target}" destroy_domain_allow_html: "%{name} ได้ไม่อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}" destroy_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมน %{target}" destroy_email_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมนอีเมล %{target}" @@ -300,6 +309,7 @@ th: destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}" destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก" destroy_unavailable_domain_html: "%{name} ได้ทำการจัดส่งไปยังโดเมน %{target} ต่อ" + destroy_user_role_html: "%{name} ได้ลบบทบาท %{target}" disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}" disable_custom_emoji_html: "%{name} ได้ปิดใช้งานอีโมจิ %{target}" disable_sign_in_token_auth_user_html: "%{name} ได้ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับ %{target}" @@ -326,8 +336,9 @@ th: update_announcement_html: "%{name} ได้อัปเดตประกาศ %{target}" update_custom_emoji_html: "%{name} ได้อัปเดตอีโมจิ %{target}" update_domain_block_html: "%{name} ได้อัปเดตการปิดกั้นโดเมนสำหรับ %{target}" + update_ip_block_html: "%{name} ได้เปลี่ยนกฎสำหรับ IP %{target}" update_status_html: "%{name} ได้อัปเดตโพสต์โดย %{target}" - deleted_status: "(โพสต์ที่ลบแล้ว)" + update_user_role_html: "%{name} ได้เปลี่ยนบทบาท %{target}" empty: ไม่พบรายการบันทึก filter_by_action: กรองตามการกระทำ filter_by_user: กรองตามผู้ใช้ @@ -760,9 +771,6 @@ th: desc_html: แสดงลิงก์ไปยังเส้นเวลาสาธารณะในหน้าเริ่มต้นและอนุญาตการเข้าถึง API ไปยังเส้นเวลาสาธารณะโดยไม่มีการรับรองความถูกต้อง title: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง title: การตั้งค่าไซต์ - trendable_by_default: - desc_html: มีผลต่อแฮชแท็กที่ไม่ได้ไม่อนุญาตก่อนหน้านี้ - title: อนุญาตให้แฮชแท็กขึ้นแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า trends: desc_html: แสดงเนื้อหาที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมในปัจจุบันเป็นสาธารณะ title: แนวโน้ม @@ -1125,10 +1133,18 @@ th: expires_on: หมดอายุเมื่อ %{date} keywords: other: "%{count} คำสำคัญ" + statuses: + other: "%{count} โพสต์" title: ตัวกรอง new: save: บันทึกตัวกรองใหม่ title: เพิ่มตัวกรองใหม่ + statuses: + back_to_filter: กลับไปที่ตัวกรอง + batch: + remove: เอาออกจากตัวกรอง + index: + title: โพสต์ที่กรองอยู่ footer: developers: นักพัฒนา more: เพิ่มเติม… @@ -1139,6 +1155,7 @@ th: changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ! copy: คัดลอก delete: ลบ + deselect: ไม่เลือกทั้งหมด none: ไม่มี order_by: เรียงลำดับตาม save_changes: บันทึกการเปลี่ยนแปลง @@ -1238,14 +1255,6 @@ th: subject: "%{name} ได้ส่งรายงาน" sign_up: subject: "%{name} ได้ลงทะเบียน" - digest: - action: ดูการแจ้งเตือนทั้งหมด - mention: "%{name} ได้กล่าวถึงคุณใน:" - new_followers_summary: - other: นอกจากนี้คุณยังได้รับ %{count} ผู้ติดตามใหม่ขณะที่ไม่อยู่! มหัศจรรย์! - subject: - other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ 🐘" - title: เมื่อคุณไม่อยู่... favourite: body: 'โพสต์ของคุณได้รับการชื่นชอบโดย %{name}:' subject: "%{name} ได้ชื่นชอบโพสต์ของคุณ" diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 2706070a3..151cc57c8 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -235,17 +235,21 @@ tr: approve_user: Kullanıcıyı Onayla assigned_to_self_report: Raporu Ata change_email_user: Kullanıcı E-postasını Değiştir + change_role_user: Kullanıcının Rolünü Değiştir confirm_user: Kullanıcıyı Onayla create_account_warning: Uyarı Oluştur create_announcement: Duyuru Oluştur + create_canonical_email_block: E-posta Engeli Oluştur create_custom_emoji: Özel İfade Oluştur create_domain_allow: İzin Verilen Alan Adı Oluştur create_domain_block: Engellenen Alan Adı Oluştur create_email_domain_block: E-Posta Alan Adı Engeli Oluştur create_ip_block: IP kuralı oluştur create_unavailable_domain: Mevcut Olmayan Alan Adı Oluştur + create_user_role: Rol Oluştur demote_user: Kullanıcıyı Düşür destroy_announcement: Duyuru Sil + destroy_canonical_email_block: E-Posta Engelini Sil destroy_custom_emoji: Özel İfadeyi Sil destroy_domain_allow: İzin Verilen Alan Adını Sil destroy_domain_block: Engellenen Alan Adını Sil @@ -254,6 +258,7 @@ tr: destroy_ip_block: IP kuralını sil destroy_status: Durumu Sil destroy_unavailable_domain: Mevcut Olmayan Alan Adı Sil + destroy_user_role: Rolü Kaldır disable_2fa_user: 2AD Kapat disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak disable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı devre dışı bırak @@ -280,24 +285,30 @@ tr: update_announcement: Duyuruyu Güncelle update_custom_emoji: Özel İfadeyi Güncelle update_domain_block: Engellenen Alan Adını Güncelle + update_ip_block: IP kuralını güncelle update_status: Durumu Güncelle + update_user_role: Rolü Güncelle actions: approve_appeal_html: "%{name}, %{target} kullanıcısının yönetim kararına itirazını kabul etti" approve_user_html: "%{name}, %{target} konumundan kaydı onayladı" assigned_to_self_report_html: "%{name} kendilerine %{target} adlı raporu verdi" change_email_user_html: "%{name}, %{target} kullanıcısının e-posta adresini değiştirdi" + change_role_user_html: "%{name}, %{target} kişisinin rolünü değiştirdi" confirm_user_html: "%{name} %{target} kullanıcısının e-posta adresini onayladı" create_account_warning_html: "%{name} %{target} 'a bir uyarı gönderdi" create_announcement_html: "%{name}, yeni %{target} duyurusunu oluşturdu" + create_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelledi" create_custom_emoji_html: "%{name} yeni %{target} ifadesini yükledi" create_domain_allow_html: "%{name}, %{target} alan adıyla birliğe izin verdi" create_domain_block_html: "%{name}, %{target} alan adını engelledi" create_email_domain_block_html: "%{name}, %{target} e-posta alan adını engelledi" create_ip_block_html: "%{name}, %{target} IP adresi için kural oluşturdu" create_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı durdurdu" + create_user_role_html: "%{name}, %{target} rolünü oluşturdu" demote_user_html: "%{name}, %{target} kullanıcısını düşürdü" destroy_announcement_html: "%{name}, %{target} duyurusunu sildi" - destroy_custom_emoji_html: "%{name}, %{target} emojisini yok etti" + destroy_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelini kaldırdı" + destroy_custom_emoji_html: "%{name}, %{target} ifadesini sildi" destroy_domain_allow_html: "%{name}, %{target} alan adıyla birlik iznini kaldırdı" destroy_domain_block_html: "%{name}, %{target} alan adı engelini kaldırdı" destroy_email_domain_block_html: "%{name}, %{target} e-posta alan adı engelini kaldırdı" @@ -305,6 +316,7 @@ tr: destroy_ip_block_html: "%{name}, %{target} IP adresi kuralını sildi" destroy_status_html: "%{name}, %{target} kullanıcısının gönderisini kaldırdı" destroy_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı sürdürdü" + destroy_user_role_html: "%{name}, %{target} rolünü sildi" disable_2fa_user_html: "%{name}, %{target} kullanıcısının iki aşamalı doğrulama gereksinimini kapattı" disable_custom_emoji_html: "%{name}, %{target} emojisini devre dışı bıraktı" disable_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı devre dışı bıraktı" @@ -331,8 +343,9 @@ tr: update_announcement_html: "%{name}, %{target} duyurusunu güncelledi" update_custom_emoji_html: "%{name}, %{target} emojisini güncelledi" update_domain_block_html: "%{name}, %{target} alan adının engelini güncelledi" + update_ip_block_html: "%{name}, %{target} IP adresi için kuralı güncelledi" update_status_html: "%{name}, %{target} kullanıcısının gönderisini güncelledi" - deleted_status: "(silinmiş durum)" + update_user_role_html: "%{name}, %{target} rolünü değiştirdi" empty: Kayıt bulunamadı. filter_by_action: Eyleme göre filtre filter_by_user: Kullanıcıya göre filtre @@ -795,8 +808,8 @@ tr: title: Zaman çizelgesi önizlemesi title: Site Ayarları trendable_by_default: - desc_html: Daha önce izin verilmeyen etiketleri etkiler - title: Ön inceleme yapmadan etiketlerin trend olmasına izin ver + desc_html: Belirli öne çıkan içeriğe yine de açıkça izin verilmeyebilir + title: Ön inceleme yapmadan öne çıkmalara izin ver trends: desc_html: Şu anda trend olan ve daha önce incelenen etiketleri herkese açık olarak göster title: Gündem etiketleri @@ -1182,7 +1195,7 @@ tr: add_keyword: Anahtar sözcük ekle keywords: Anahtar Sözcükler statuses: Tekil gönderiler - statuses_hint_html: Bu filtre aşağıdaki anahtar kelimelere eşlenip eşlenmediklerinden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Bu gönderileri gözden geçirip, buraya tıklayarak filtreden kaldırabilirsiniz. + statuses_hint_html: Bu filtre, aşağıdaki anahtar kelimelerle eşleşip eşleşmediklerinden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Filtredeki gönderileri inceleyin veya kaldırın. title: Filtreyi düzenle errors: deprecated_api_multiple_keywords: Bu parametreler, birden fazla filtre anahtar sözcüğü için geçerli olduğundan dolayı bu uygulama içerisinden değiştirilemezler. Daha yeni bir uygulama veya web arayüzünü kullanın. @@ -1220,12 +1233,22 @@ tr: trending_now: Şu an gündemde generic: all: Tümü + all_items_on_page_selected_html: + one: Bu sayfadaki %{count} öğe seçilmiş. + other: Bu sayfadaki tüm %{count} öğe seçilmiş. + all_matching_items_selected_html: + one: Aramanızla eşleşen %{count} öğe seçilmiş. + other: Aramanızla eşleşen tüm %{count} öğe seçilmiş. changes_saved_msg: Değişiklikler başarıyla kaydedildi! copy: Kopyala delete: Sil + deselect: Hiçbirini seçme none: Hiçbiri order_by: Sıralama ölçütü save_changes: Değişiklikleri kaydet + select_all_matching_items: + one: Aramanızla eşleşen %{count} öğeyi seç. + other: Aramanızla eşleşen tüm %{count} öğeyi seç. today: bugün validation_errors: one: Bir şeyler ters gitti! Lütfen aşağıdaki hatayı gözden geçiriniz @@ -1334,17 +1357,6 @@ tr: subject: "%{name} bir bildirim gönderdi" sign_up: subject: "%{name} kaydoldu" - digest: - action: Tüm bildirimleri görüntüle - body: Son ziyaretiniz olan %{since}'den beri'da kaçırdığınız şeylerin özeti - mention: "%{name} senden bahsetti:" - new_followers_summary: - one: Ayrıca, uzaktayken yeni bir takipçi kazandınız! Yaşasın! - other: Ayrıca, uzaktayken %{count} yeni takipçi kazandınız! İnanılmaz! - subject: - one: "Son ziyaretinizden bu yana 1 yeni bildirim 🐘" - other: "Son ziyaretinizden bu yana %{count} yeni bildirim 🐘" - title: Senin yokluğunda... favourite: body: "%{name} durumunu beğendi:" subject: "%{name} durumunu beğendi" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index c1ca26c52..30e9f3e56 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -243,17 +243,21 @@ uk: approve_user: Затвердити користувачів assigned_to_self_report: Призначити звіт change_email_user: Змінити електронну пошту для користувача + change_role_user: Змінити роль користувача confirm_user: Підтвердити користувача create_account_warning: Створити попередження create_announcement: Створити оголошення + create_canonical_email_block: Створити блок електронної пошти create_custom_emoji: Створити користувацьке емодзі create_domain_allow: Створити дозвіл на домен create_domain_block: Створити блокування домену create_email_domain_block: Створити блокування поштового домену create_ip_block: Створити правило IP create_unavailable_domain: Створити недоступний домен + create_user_role: Створити роль demote_user: Понизити користувача destroy_announcement: Видалити оголошення + destroy_canonical_email_block: Видалити блок електронної пошти destroy_custom_emoji: Видалити користувацьке емодзі destroy_domain_allow: Видалити дозвіл на домен destroy_domain_block: Видалити блокування домену @@ -262,6 +266,7 @@ uk: destroy_ip_block: Видалити правило IP destroy_status: Видалити пост destroy_unavailable_domain: Видалити недоступний домен + destroy_user_role: Знищити роль disable_2fa_user: Вимкнути 2FA disable_custom_emoji: Вимкнути користувацькі емодзі disable_sign_in_token_auth_user: Вимкнути автентифікацію за допомогою е-пошти для користувача @@ -288,24 +293,30 @@ uk: update_announcement: Оновити оголошення update_custom_emoji: Оновити користувацькі емодзі update_domain_block: Оновити блокування домену + update_ip_block: Оновити правило IP update_status: Оновити статус + update_user_role: Оновити роль actions: approve_appeal_html: "%{name} затвердили звернення на оскарження рішення від %{target}" approve_user_html: "%{name} схвалює реєстрацію від %{target}" assigned_to_self_report_html: "%{name} створює скаргу %{target} на себе" change_email_user_html: "%{name} змінює поштову адресу користувача %{target}" + change_role_user_html: "%{name} змінює роль %{target}" confirm_user_html: "%{name} підтверджує стан поштової адреси користувача %{target}" create_account_warning_html: "%{name} надсилає попередження до %{target}" create_announcement_html: "%{name} створює нове оголошення %{target}" + create_canonical_email_block_html: "%{name} блокує електронну пошту з хешем %{target}" create_custom_emoji_html: "%{name} завантажує нові емодзі %{target}" create_domain_allow_html: "%{name} дозволяє федерацію з доменом %{target}" create_domain_block_html: "%{name} блокує домен %{target}" create_email_domain_block_html: "%{name} блокує домен електронної пошти %{target}" create_ip_block_html: "%{name} створює правило для IP %{target}" create_unavailable_domain_html: "%{name} зупиняє доставляння на домен %{target}" + create_user_role_html: "%{name} створює роль %{target}" demote_user_html: "%{name} понижує користувача %{target}" destroy_announcement_html: "%{name} видаляє оголошення %{target}" - destroy_custom_emoji_html: "%{name} знищує емодзі %{target}" + destroy_canonical_email_block_html: "%{name} розблоковує електронну пошту з хешем %{target}" + destroy_custom_emoji_html: "%{name} видаляє емоджі %{target}" destroy_domain_allow_html: "%{name} скасовує федерацію з доменом %{target}" destroy_domain_block_html: "%{name} розблокує домен %{target}" destroy_email_domain_block_html: "%{name} розблоковує домен електронної пошти %{target}" @@ -313,6 +324,7 @@ uk: destroy_ip_block_html: "%{name} видаляє правило для IP %{target}" destroy_status_html: "%{name} видаляє статус %{target}" destroy_unavailable_domain_html: "%{name} відновлює доставляння на домен %{target}" + destroy_user_role_html: "%{name} видаляє роль %{target}" disable_2fa_user_html: "%{name} вимикає двоетапну перевірку для користувача %{target}" disable_custom_emoji_html: "%{name} вимикає емодзі %{target}" disable_sign_in_token_auth_user_html: "%{name} вимикає автентифікацію через е-пошту для %{target}" @@ -339,8 +351,9 @@ uk: update_announcement_html: "%{name} оновлює оголошення %{target}" update_custom_emoji_html: "%{name} оновлює емодзі %{target}" update_domain_block_html: "%{name} оновлює блокування домену для %{target}" + update_ip_block_html: "%{name} змінює правило для IP %{target}" update_status_html: "%{name} змінює статус користувача %{target}" - deleted_status: "(видалений статус)" + update_user_role_html: "%{name} змінює роль %{target}" empty: Не знайдено жодного журналу. filter_by_action: Фільтрувати за дією filter_by_user: Фільтрувати за користувачем @@ -624,6 +637,7 @@ uk: resolve_description_html: Не буде застосовано жодних дій проти облікового запису, на який скаржилися, не буде записано попередження, а скаргу буде закрито. silence_description_html: Профіль буде видимий лише тим, хто вже стежить за ним або знайде його самостійно, сильно обмежуючи його знаходження. Можна потім скасувати. suspend_description_html: Профіль і весь його вміст буде недоступним, поки його не буде видалено. Взаємодія з обліковим записом буде неможливою. + actions_description_html: Визначте, які дії слід вжити для розв'язання цієї скарги. Якщо ви оберете каральні дії проти зареєстрованого облікового запису, про них буде надіслано сповіщення електронним листом, крім випадків, коли вибрано категорію Спам. add_to_report: Додати ще подробиць до скарги are_you_sure: Ви впевнені? assign_to_self: Призначити мені @@ -820,8 +834,8 @@ uk: title: Передпоказ фіду title: Налаштування сайту trendable_by_default: - desc_html: Впливає на хештеги, які не були заборонені раніше - title: Дозволити хештегам потрапляти в тренди без попереднього перегляду + desc_html: Конкретні популярні матеріали все одно можуть бути явно відхилені + title: Дозволити популярне без попереднього огляду trends: desc_html: Відображати розглянуті хештеґи, які популярні зараз title: Популярні хештеги @@ -1205,6 +1219,8 @@ uk: edit: add_keyword: Додати ключове слово keywords: Ключові слова + statuses: Окремі дописи + statuses_hint_html: Цей фільтр застосовується для вибору окремих дописів, незалежно від того, чи збігаються вони з ключовими словами нижче. Перегляд чи вилучення дописів з фільтра. title: Редагувати фільтр errors: deprecated_api_multiple_keywords: Ці параметри не можна змінити з цього застосунку, тому що вони застосовуються до більш ніж одного ключового слова. Використовуйте новішу версію застосунку або вебінтерфейс. @@ -1220,10 +1236,27 @@ uk: many: "%{count} ключових слів" one: "%{count} ключове слово" other: "%{count} ключових слів" + statuses: + few: "%{count} дописи" + many: "%{count} дописів" + one: "%{count} допис" + other: "%{count} дописа" + statuses_long: + few: Сховано %{count} окремі дописи + many: Сховано %{count} окремих дописів + one: Сховано %{count} окремий допис + other: Сховано %{count} окремі дописи title: Фільтри new: save: Зберегти новий фільтр title: Додати фільтр + statuses: + back_to_filter: Назад до фільтру + batch: + remove: Вилучити з фільтра + index: + hint: Цей фільтр застосовується для вибору окремих дописів, незалежно від інших критеріїв. Ви можете додавати більше дописів до цього фільтра з вебінтерфейсу. + title: Відфільтровані дописи footer: developers: Розробникам more: Більше… @@ -1231,12 +1264,28 @@ uk: trending_now: Актуальні generic: all: Усі + all_items_on_page_selected_html: + few: Усі %{count} елементи на цій сторінці вибрано. + many: Усі %{count} елементів на цій сторінці вибрано. + one: "%{count} елемент на цій сторінці вибрано." + other: "%{count} елементи на цій сторінці вибрано." + all_matching_items_selected_html: + few: Усі %{count} елементи, що збігаються з вашим пошуком вибрано. + many: Усі %{count} елементів, що збігаються з вашим пошуком вибрано. + one: "%{count} елемент, що збігається з вашим пошуком вибрано." + other: Усі %{count} елементи, що збігаються з вашим пошуком вибрано. changes_saved_msg: Зміни успішно збережені! copy: Копіювати delete: Видалити + deselect: Скасувати вибір none: Немає order_by: Сортувати за save_changes: Зберегти зміни + select_all_matching_items: + few: Вибрати всі %{count} елементи, що збігаються з вашим пошуком. + many: Вибрати всі %{count} елементів, що збігаються з вашим пошуком. + one: Вибрати %{count} елемент, що збігається з вашим пошуком. + other: Вибрати всі %{count} елементи, що збігаються з вашим пошуком. today: сьогодні validation_errors: few: Щось досі не гаразд! Перегляньте %{count} повідомлень про помилки @@ -1349,21 +1398,6 @@ uk: subject: "%{name} подає скаргу" sign_up: subject: "%{name} приєднується" - digest: - action: Показати усі сповіщення - body: Коротко про пропущене вами з Вашого останнього входу %{since} - mention: "%{name} згадав(-ла) Вас в:" - new_followers_summary: - few: У Вас з'явилось %{count} нових підписники! Чудово! - many: У Вас з'явилось %{count} нових підписників! Чудово! - one: Також, у Вас з'явився новий підписник, коли ви були відсутні! Ура! - other: Також, у Вас з'явилось %{count} нових підписників, поки ви були відсутні! Чудово! - subject: - few: "%{count} нові сповіщення з вашого останнього відвідування 🐘" - many: "%{count} нових сповіщень з вашого останнього відвідування 🐘" - one: "1 нове сповіщення з вашого останнього відвідування 🐘" - other: "%{count} нових сповіщень з вашого останнього відвідування 🐘" - title: Поки ви були відсутні... favourite: body: 'Ваш статус подобається %{name}:' subject: Ваш статус сподобався %{name} diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 625d3a07e..dfc7623dd 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -228,17 +228,21 @@ vi: approve_user: Chấp nhận người dùng assigned_to_self_report: Tự xử lý báo cáo change_email_user: Đổi email người dùng + change_role_user: Thay đổi vai trò confirm_user: Xác minh người dùng create_account_warning: Nhắc nhở người dùng create_announcement: Tạo thông báo mới + create_canonical_email_block: Tạo chặn tên miền email mới create_custom_emoji: Tạo emoji create_domain_allow: Cho phép máy chủ create_domain_block: Chặn máy chủ create_email_domain_block: Chặn tên miền email create_ip_block: Tạo chặn IP mới create_unavailable_domain: Máy chủ không khả dụng + create_user_role: Tạo vai trò demote_user: Xóa vai trò destroy_announcement: Xóa thông báo + destroy_canonical_email_block: Bỏ chặn tên miền email destroy_custom_emoji: Xóa emoji destroy_domain_allow: Bỏ cho phép máy chủ destroy_domain_block: Bỏ chặn máy chủ @@ -247,6 +251,7 @@ vi: destroy_ip_block: Xóa IP đã chặn destroy_status: Xóa tút destroy_unavailable_domain: Xóa máy chủ không khả dụng + destroy_user_role: Xóa vai trò disable_2fa_user: Vô hiệu hóa 2FA disable_custom_emoji: Vô hiệu hóa emoji disable_sign_in_token_auth_user: Vô hiệu hóa xác minh bằng email cho người dùng @@ -273,23 +278,29 @@ vi: update_announcement: Cập nhật thông báo update_custom_emoji: Cập nhật emoji update_domain_block: Cập nhật máy chủ chặn + update_ip_block: Cập nhật chặn IP update_status: Cập nhật tút + update_user_role: Cập nhật vai trò actions: approve_appeal_html: "%{name} đã chấp nhận kháng cáo của %{target}" approve_user_html: "%{name} đã chấp nhận đăng ký từ %{target}" assigned_to_self_report_html: "%{name} tự xử lý báo cáo %{target}" change_email_user_html: "%{name} đã thay đổi địa chỉ email của %{target}" + change_role_user_html: "%{name} đã thay đổi vai trò %{target}" confirm_user_html: "%{name} đã xác minh địa chỉ email của %{target}" create_account_warning_html: "%{name} đã nhắc nhở %{target}" create_announcement_html: "%{name} tạo thông báo mới %{target}" + create_canonical_email_block_html: "%{name} chặn email với hàm băm %{target}" create_custom_emoji_html: "%{name} đã tải lên biểu tượng cảm xúc mới %{target}" create_domain_allow_html: "%{name} kích hoạt liên hợp với %{target}" create_domain_block_html: "%{name} chặn máy chủ %{target}" create_email_domain_block_html: "%{name} chặn tên miền email %{target}" create_ip_block_html: "%{name} đã chặn IP %{target}" create_unavailable_domain_html: "%{name} ngưng phân phối với máy chủ %{target}" + create_user_role_html: "%{name} đã tạo vai trò %{target}" demote_user_html: "%{name} đã xóa vai trò của %{target}" destroy_announcement_html: "%{name} xóa thông báo %{target}" + destroy_canonical_email_block_html: "%{name} bỏ chặn email với hàm băm %{target}" destroy_custom_emoji_html: "%{name} đã xóa emoji %{target}" destroy_domain_allow_html: "%{name} đã ngừng liên hợp với %{target}" destroy_domain_block_html: "%{name} bỏ chặn máy chủ %{target}" @@ -298,6 +309,7 @@ vi: destroy_ip_block_html: "%{name} bỏ chặn IP %{target}" destroy_status_html: "%{name} đã xóa tút của %{target}" destroy_unavailable_domain_html: "%{name} tiếp tục phân phối với máy chủ %{target}" + destroy_user_role_html: "%{name} đã xóa vai trò %{target}" disable_2fa_user_html: "%{name} đã vô hiệu hóa xác minh hai bước của %{target}" disable_custom_emoji_html: "%{name} đã ẩn emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} vô hiệu hóa xác minh email của %{target}" @@ -324,8 +336,9 @@ vi: update_announcement_html: "%{name} cập nhật thông báo %{target}" update_custom_emoji_html: "%{name} đã cập nhật emoji %{target}" update_domain_block_html: "%{name} cập nhật chặn máy chủ %{target}" + update_ip_block_html: "%{name} cập nhật chặn IP %{target}" update_status_html: "%{name} cập nhật tút của %{target}" - deleted_status: "(tút đã xóa)" + update_user_role_html: "%{name} đã thay đổi vai trò %{target}" empty: Không tìm thấy bản ghi. filter_by_action: Theo hành động filter_by_user: Theo người @@ -777,8 +790,8 @@ vi: title: Cho phép truy cập vào dòng thời gian công cộng không cần cho phép title: Cài đặt trang web trendable_by_default: - desc_html: Ảnh hưởng đến các hashtag chưa được cho phép trước đây - title: Cho phép hashtags theo xu hướng mà không cần xem xét trước + desc_html: Nội dung xu hướng cụ thể vẫn có thể bị cấm một cách rõ ràng + title: Cho phép xu hướng mà không cần xem xét trước trends: desc_html: Hiển thị công khai các hashtag được xem xét trước đây hiện đang là xu hướng title: Hashtag xu hướng @@ -1160,6 +1173,7 @@ vi: add_keyword: Thêm từ khoá keywords: Từ khóa statuses: Những tút riêng lẻ + statuses_hint_html: Bộ lọc này áp dụng cho các tút riêng lẻ được chọn bất kể chúng có khớp với các từ khóa bên dưới hay không. Xem lại hoặc xóa các tút từ bộ lọc. title: Chỉnh sửa bộ lọc errors: deprecated_api_multiple_keywords: Không thể thay đổi các tham số này từ ứng dụng này vì chúng áp dụng cho nhiều hơn một từ khóa bộ lọc. Sử dụng ứng dụng mới hơn hoặc giao diện web. @@ -1174,6 +1188,8 @@ vi: other: "%{count} từ khóa" statuses: other: "%{count} tút" + statuses_long: + other: "%{count} tút riêng lẻ đã ẩn" title: Bộ lọc new: save: Lưu thành bộ lọc mới @@ -1183,6 +1199,7 @@ vi: batch: remove: Xóa khỏi bộ lọc index: + hint: Bộ lọc này áp dụng để chọn các tút riêng lẻ bất kể các tiêu chí khác. Bạn có thể thêm các tút khác vào bộ lọc này từ giao diện web. title: Những tút đã lọc footer: developers: Phát triển @@ -1191,12 +1208,19 @@ vi: trending_now: Xu hướng generic: all: Tất cả + all_items_on_page_selected_html: + other: Toàn bộ %{count} mục trong trang này đã được chọn. + all_matching_items_selected_html: + other: Toàn bộ %{count} mục trùng khớp với tìm kiếm đã được chọn. changes_saved_msg: Đã lưu thay đổi! copy: Sao chép delete: Xóa + deselect: Bỏ chọn tất cả none: Trống order_by: Sắp xếp save_changes: Lưu thay đổi + select_all_matching_items: + other: Chọn tất cả%{count} mục trùng hợp với tìm kiếm của bạn. today: hôm nay validation_errors: other: Đã có %{count} lỗi xảy ra! Xem chi tiết bên dưới @@ -1303,15 +1327,6 @@ vi: subject: "%{name} đã gửi báo cáo" sign_up: subject: "%{name} đã được đăng ký" - digest: - action: Xem toàn bộ thông báo - body: Dưới đây là những tin nhắn bạn đã bỏ lỡ kể từ lần truy cập trước vào %{since} - mention: "%{name} nhắc đến bạn trong:" - new_followers_summary: - other: Ngoài ra, bạn đã có %{count} người theo dõi mới trong khi đi chơi! Ngạc nhiên chưa! - subject: - other: "%{count} thông báo mới kể từ lần đăng nhập cuối 🐘" - title: Khi bạn offline... favourite: body: Tút của bạn vừa được thích bởi %{name} subject: "%{name} vừa thích tút của bạn" diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 1a71554bb..e3eacca16 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -22,9 +22,9 @@ zh-CN: federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容 Mastodon 服务器上的人。 get_apps: 尝试移动应用 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 - instance_actor_flash: '这个账号是个虚拟账号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。 - - ' + instance_actor_flash: | + 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。 + 该账号用于达成互联之目的,除非你想要封禁整个实例,否则该账号不应该被封禁。在此种情况下,你应该使用域名封禁。 learn_more: 了解详情 logged_in_as_html: 您当前以 %{username} 登录。 logout_before_registering: 您已登录。 @@ -62,7 +62,7 @@ zh-CN: followers: other: 关注者 following: 正在关注 - instance_actor_flash: 这个账户是一个虚拟账户,用来代表服务器自身,不代表任何实际用户。它用于互通功能,不应该被封禁。 + instance_actor_flash: 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。该账号用于达成互联之目的,不应该被停用。 joined: 加入于 %{date} last_active: 最近活动 link_verified_on: 此链接的所有权已在 %{date} 检查 @@ -230,6 +230,7 @@ zh-CN: approve_user: 批准用户 assigned_to_self_report: 指派举报 change_email_user: 为用户修改邮箱地址 + change_role_user: 更改用户角色 confirm_user: 确认用户 create_account_warning: 创建警告 create_announcement: 创建公告 @@ -239,6 +240,7 @@ zh-CN: create_email_domain_block: 封禁电子邮箱域名 create_ip_block: 新建 IP 规则 create_unavailable_domain: 创建不可用域名 + create_user_role: 创建角色 demote_user: 给用户降职 destroy_announcement: 删除公告 destroy_custom_emoji: 删除自定义表情符号 @@ -249,6 +251,7 @@ zh-CN: destroy_ip_block: 删除 IP 规则 destroy_status: 删除嘟文 destroy_unavailable_domain: 删除不可用域名 + destroy_user_role: 销毁角色 disable_2fa_user: 停用双重认证 disable_custom_emoji: 禁用自定义表情符号 disable_sign_in_token_auth_user: 为用户禁用电子邮件令牌认证 @@ -276,11 +279,13 @@ zh-CN: update_custom_emoji: 更新自定义表情符号 update_domain_block: 更新域名屏蔽 update_status: 更新嘟文 + update_user_role: 更新角色 actions: approve_appeal_html: "%{name} 批准了 %{target} 对审核结果的申诉" approve_user_html: "%{name} 批准了用户 %{target} 的注册" assigned_to_self_report_html: "%{name} 接管了举报 %{target}" change_email_user_html: "%{name} 更改了用户 %{target} 的电子邮件地址" + change_role_user_html: "%{name} 更改了 %{target} 的角色" confirm_user_html: "%{name} 确认了用户 %{target} 的电子邮件地址" create_account_warning_html: "%{name} 向 %{target} 发送了警告" create_announcement_html: "%{name} 创建了新公告 %{target}" @@ -290,9 +295,10 @@ zh-CN: create_email_domain_block_html: "%{name} 屏蔽了电子邮件域名 %{target}" create_ip_block_html: "%{name} 为 IP %{target} 创建了规则" create_unavailable_domain_html: "%{name} 停止了向域名 %{target} 的投递" + create_user_role_html: "%{name} 创建了 %{target} 角色" demote_user_html: "%{name} 对用户 %{target} 进行了降任操作" destroy_announcement_html: "%{name} 删除了公告 %{target}" - destroy_custom_emoji_html: "%{name} 销毁了自定义表情 %{target}" + destroy_custom_emoji_html: "%{name} 删除了自定义表情 %{target}" destroy_domain_allow_html: "%{name} 拒绝了和 %{target} 跨站交互" destroy_domain_block_html: "%{name} 解除了对域名 %{target} 的屏蔽" destroy_email_domain_block_html: "%{name} 解除了对电子邮件域名 %{target} 的屏蔽" @@ -300,6 +306,7 @@ zh-CN: destroy_ip_block_html: "%{name} 删除了 IP %{target} 的规则" destroy_status_html: "%{name} 删除了 %{target} 的嘟文" destroy_unavailable_domain_html: "%{name} 恢复了向域名 %{target} 的投递" + destroy_user_role_html: "%{name} 删除了 %{target} 角色" disable_2fa_user_html: "%{name} 停用了用户 %{target} 的双重认证" disable_custom_emoji_html: "%{name} 停用了自定义表情 %{target}" disable_sign_in_token_auth_user_html: "%{name} 已为 %{target} 禁用电子邮件令牌认证" @@ -327,7 +334,7 @@ zh-CN: update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}" update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽" update_status_html: "%{name} 刷新了 %{target} 的嘟文" - deleted_status: "(嘟文已删除)" + update_user_role_html: "%{name} 更改了 %{target} 角色" empty: 没有找到日志 filter_by_action: 根据行为过滤 filter_by_user: 根据用户过滤 @@ -779,7 +786,6 @@ zh-CN: title: 时间轴预览 title: 网站设置 trendable_by_default: - desc_html: 影响以前未禁止的话题标签 title: 允许在未审查的情况下将话题置为热门 trends: desc_html: 公开显示先前已通过审核的当前热门话题 @@ -834,7 +840,7 @@ zh-CN: links: allow: 允许链接 allow_provider: 允许发布者 - description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝单个链接。 + description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝个别链接。 disallow: 不允许链接 disallow_provider: 不允许发布者 shared_by_over_week: @@ -852,7 +858,7 @@ zh-CN: statuses: allow: 允许嘟文 allow_account: 允许发布者 - description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝单条嘟文。 + description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝个别嘟文。 disallow: 禁止嘟文 disallow_account: 禁止发布者 not_discoverable: 发布者选择不被发现 @@ -1162,7 +1168,7 @@ zh-CN: add_keyword: 添加关键词 keywords: 关键词 statuses: 个别嘟文 - statuses_hint_html: 无论是否匹配下列关键词,此过滤器适用于选用个别嘟文。你可以点击此处来审核这些嘟文,并从过滤器中移除。 + statuses_hint_html: 无论是否匹配下列关键词,此过滤器适用于选用个别嘟文。从过滤器中审核嘟文或移除嘟文。 title: 编辑过滤器 errors: deprecated_api_multiple_keywords: 这些参数不能从此应用程序更改,因为它们应用于一个以上的过滤关键字。 使用较新的应用程序或网页界面。 @@ -1197,12 +1203,19 @@ zh-CN: trending_now: 现在流行 generic: all: 全部 + all_items_on_page_selected_html: + other: 此页面上的所有 %{count} 项目已被选中。 + all_matching_items_selected_html: + other: 所有 %{count} 匹配您搜索的项目都已被选中。 changes_saved_msg: 更改保存成功! copy: 复制 delete: 删除 + deselect: 取消全选 none: 无 order_by: 排序方式 save_changes: 保存更改 + select_all_matching_items: + other: 选择匹配您搜索的所有 %{count} 个项目。 today: 今天 validation_errors: other: 出错啦!检查一下下面 %{count} 处出错的地方吧 @@ -1309,15 +1322,6 @@ zh-CN: subject: "%{name} 提交了报告" sign_up: subject: "%{name} 注册了" - digest: - action: 查看所有通知 - body: 以下是自%{since}你最后一次登录以来错过的消息的摘要 - mention: "%{name} 在嘟文中提到了你:" - new_followers_summary: - other: 而且,你不在的时候,有 %{count} 个人关注了你!好棒! - subject: - other: "自上次访问以来,收到 %{count} 条新通知 🐘" - title: 在你不在的这段时间…… favourite: body: 你的嘟文被 %{name} 喜欢了: subject: "%{name} 喜欢了你的嘟文" diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index e375bb4c8..39dfc9356 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -263,7 +263,6 @@ zh-HK: create_unavailable_domain_html: "%{name} 停止了對網域 %{target} 的更新通知" demote_user_html: "%{name} 降權了 %{target}" destroy_announcement_html: "%{name} 刪除了公告 %{target}" - destroy_custom_emoji_html: "%{name} 刪除了 Emoji %{target}" destroy_domain_allow_html: "%{name} 禁止網域 %{target} 加入聯邦宇宙" destroy_domain_block_html: "%{name} 封鎖了網域 %{target}" destroy_email_domain_block_html: "%{name} 解除封鎖 e-mail 網域 %{target}" @@ -294,7 +293,6 @@ zh-HK: update_custom_emoji_html: "%{name} 更新了 Emoji 表情符號 %{target}" update_domain_block_html: "%{name} 更新了對 %{target} 的網域封鎖" update_status_html: "%{name} 更新了 %{target} 的嘟文" - deleted_status: "(已刪除文章)" empty: 找不到任何日誌。 filter_by_action: 按動作篩選 filter_by_user: 按帳號篩選 @@ -591,9 +589,6 @@ zh-HK: desc_html: 在主頁顯示本站時間軸 title: 時間軸預覽 title: 網站設定 - trendable_by_default: - desc_html: 影響之前並未禁止的標籤 - title: 容許標籤不需要審核來成為今期流行 trends: desc_html: 公開地顯示已審核的標籤為今期流行 title: 趨勢主題標籤 @@ -939,13 +934,6 @@ zh-HK: carry_mutes_over_text: 此用戶從%{acct} 轉移,該帳號已被你靜音。 copy_account_note_text: 此用戶從%{acct} 轉移,這是你之前在該帳號留下的備注: notification_mailer: - digest: - action: 查看所有通知 - body: 這是自從你在%{since}使用以後,你錯失了的訊息︰ - mention: "%{name} 在此提及了你︰" - new_followers_summary: - other: 你新獲得了 %{count} 位關注者了!好厲害! - title: 在你不在的這段時間…… favourite: body: 你的文章被 %{name} 喜愛: subject: "%{name} 喜歡你的文章" diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index c055ba69f..c59df907a 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -230,17 +230,21 @@ zh-TW: approve_user: 批准使用者 assigned_to_self_report: 指派回報 change_email_user: 變更使用者的電子信箱地址 + change_role_user: 變更使用者角色 confirm_user: 確認使用者 create_account_warning: 建立警告 create_announcement: 建立公告 + create_canonical_email_block: 新增 E-mail 封鎖 create_custom_emoji: 建立自訂顏文字 create_domain_allow: 建立允許網域 create_domain_block: 建立阻擋網域 create_email_domain_block: 封鎖電子郵件站台 create_ip_block: 新增IP規則 create_unavailable_domain: 新增無法存取的網域 + create_user_role: 建立角色 demote_user: 把用戶降級 destroy_announcement: 刪除公告 + destroy_canonical_email_block: 刪除 E-mail 封鎖 destroy_custom_emoji: 刪除自訂顏文字 destroy_domain_allow: 刪除允許網域 destroy_domain_block: 刪除阻擋網域 @@ -249,6 +253,7 @@ zh-TW: destroy_ip_block: 刪除 IP 規則 destroy_status: 刪除狀態 destroy_unavailable_domain: 刪除無法存取的網域 + destroy_user_role: 移除角色 disable_2fa_user: 停用兩階段認證 disable_custom_emoji: 停用自訂顏文字 disable_sign_in_token_auth_user: 停用使用者電子信箱 token 驗證 @@ -275,24 +280,30 @@ zh-TW: update_announcement: 更新公告 update_custom_emoji: 更新自訂顏文字 update_domain_block: 更新封鎖網域 + update_ip_block: 更新 IP 規則 update_status: 更新狀態 + update_user_role: 更新角色 actions: approve_appeal_html: "%{name} 批准了來自 %{target} 的審核決定申訴" approve_user_html: "%{name} 批准了從 %{target} 而來的註冊" assigned_to_self_report_html: "%{name} 將報告 %{target} 指派給自己" change_email_user_html: "%{name} 變更了使用者 %{target} 的電子信箱地址" + change_role_user_html: "%{name} 變更了 %{target} 的角色" confirm_user_html: "%{name} 確認了使用者 %{target} 的電子信箱位址" create_account_warning_html: "%{name} 已對 %{target} 送出警告" create_announcement_html: "%{name} 新增了公告 %{target}" + create_canonical_email_block_html: "%{name} 已封鎖了 hash 為 %{target} 之 e-mail" create_custom_emoji_html: "%{name} 上傳了新自訂表情符號 %{target}" create_domain_allow_html: "%{name} 允許 %{target} 網域加入聯邦宇宙" create_domain_block_html: "%{name} 封鎖了網域 %{target}" create_email_domain_block_html: "%{name} 封鎖了電子信箱網域 %{target}" create_ip_block_html: "%{name} 已經設定了IP %{target} 的規則" create_unavailable_domain_html: "%{name} 停止發送至網域 %{target}" + create_user_role_html: "%{name} 建立了 %{target} 角色" demote_user_html: "%{name} 將使用者 %{target} 降級" destroy_announcement_html: "%{name} 刪除了公告 %{target}" - destroy_custom_emoji_html: "%{name} 停用了自訂表情符號 %{target}" + destroy_canonical_email_block_html: "%{name} 取消了 hash 為 %{target} 之 e-mail 的封鎖" + destroy_custom_emoji_html: "%{name} 刪除了表情符號 %{target}" destroy_domain_allow_html: "%{name} 不允許與網域 %{target} 加入聯邦宇宙" destroy_domain_block_html: "%{name} 取消了對網域 %{target} 的封鎖" destroy_email_domain_block_html: "%{name} 取消了對電子信箱網域 %{target} 的封鎖" @@ -300,6 +311,7 @@ zh-TW: destroy_ip_block_html: "%{name} 刪除了 IP %{target} 的規則" destroy_status_html: "%{name} 刪除了 %{target} 的嘟文" destroy_unavailable_domain_html: "%{name} 恢復了對網域 %{target} 的發送" + destroy_user_role_html: "%{name} 刪除了 %{target} 角色" disable_2fa_user_html: "%{name} 停用了使用者 %{target} 的兩階段認證" disable_custom_emoji_html: "%{name} 停用了自訂表情符號 %{target}" disable_sign_in_token_auth_user_html: "%{name} 停用了 %{target} 之使用者電子信箱 token 驗證" @@ -326,8 +338,9 @@ zh-TW: update_announcement_html: "%{name} 更新了公告 %{target}" update_custom_emoji_html: "%{name} 更新了自訂表情符號 %{target}" update_domain_block_html: "%{name} 更新了 %{target} 之網域封鎖" + update_ip_block_html: "%{name} 已經更新了 IP %{target} 之規則" update_status_html: "%{name} 更新了 %{target} 的嘟文" - deleted_status: "(已刪除嘟文)" + update_user_role_html: "%{name} 變更了 %{target} 角色" empty: 找不到 log filter_by_action: 按動作篩選 filter_by_user: 按使用者篩選 @@ -781,8 +794,8 @@ zh-TW: title: 時間軸預覽 title: 網站設定 trendable_by_default: - desc_html: 影響此前並未被禁用的標籤 - title: 允許熱門的主題標籤直接顯示於趨勢區,不需經過審核 + desc_html: 特定的熱門內容仍可以被明確地禁止 + title: 允許熱門話題直接顯示,不需經過審核 trends: desc_html: 公開目前炎上的已審核標籤 title: 趨勢主題標籤 @@ -1164,7 +1177,7 @@ zh-TW: add_keyword: 新增關鍵字 keywords: 關鍵字 statuses: 各別嘟文 - statuses_hint_html: 此過濾器會套用至所選之各別嘟文,不管它們有無匹配到以下的關鍵字。您可以檢視這些嘟文而按此將它們從過濾器中移除。 + statuses_hint_html: 此過濾器會套用至所選之各別嘟文,無論其是否符合下列關鍵字。審閱或從過濾條件移除貼文。 title: 編輯篩選條件 errors: deprecated_api_multiple_keywords: 這些參數無法從此應用程式中更改,因為它們適用於一或多個過濾器關鍵字。請使用較新的應用程式或是網頁介面。 @@ -1199,12 +1212,19 @@ zh-TW: trending_now: 現正熱門 generic: all: 全部 + all_items_on_page_selected_html: + other: 已選取此頁面上 %{count} 個項目。 + all_matching_items_selected_html: + other: 已選取符合您搜尋的 %{count} 個項目。 changes_saved_msg: 已成功儲存修改! copy: 複製 delete: 刪除 + deselect: 取消選擇全部 none: 無 order_by: 排序 save_changes: 儲存修改 + select_all_matching_items: + other: 選取 %{count} 個符合您搜尋的項目。 today: 今天 validation_errors: other: 唔…這是什麼鳥?請檢查以下 %{count} 項錯誤 @@ -1311,15 +1331,6 @@ zh-TW: subject: "%{name} 送出了一則檢舉報告" sign_up: subject: "%{name} 已進行註冊" - digest: - action: 閱覽所有通知 - body: 以下是自 %{since} 您最後一次登入以來錯過的訊息摘要 - mention: "%{name} 在此提及了您:" - new_followers_summary: - other: 此外,您在離開時獲得了 %{count} 位新的追蹤者!超棒的! - subject: - other: "從您上次造訪以來有 %{count} 個新通知 🐘" - title: 您不在的時候... favourite: body: 您的嘟文被 %{name} 加入了最愛: subject: "%{name} 將您的嘟文加入了最愛" From 802fcd06dd4ab7f78d24d6eea0f1bb2172615280 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 22:20:36 +0900 Subject: [PATCH 154/280] Bump @babel/core from 7.18.13 to 7.19.0 (#19126) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.13 to 7.19.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 190 ++++++++------------------------------------------- 2 files changed, 28 insertions(+), 164 deletions(-) diff --git a/package.json b/package.json index db0c0a05d..b0f8db84d 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.13", + "@babel/core": "^7.19.0", "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index d0e249e35..f9ab55856 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,7 +30,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== @@ -42,42 +42,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.2": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" - integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.10" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.10" - "@babel/types" "^7.17.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@^7.18.13": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" - integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.0", "@babel/core@^7.7.2": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.0.tgz#d2f5f4f2033c00de8096be3c9f45772563e150c3" + integrity sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.13" + "@babel/generator" "^7.19.0" + "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-module-transforms" "^7.19.0" + "@babel/helpers" "^7.19.0" + "@babel/parser" "^7.19.0" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.13" - "@babel/types" "^7.18.13" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -93,25 +72,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.17.10", "@babel/generator@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.6.tgz#9ab2d46d3cbf631f0e80f72e72874a04c3fc12a9" - integrity sha512-AIwwoOS8axIC5MZbhNHRLKi3D+DMpvDf9XUcu3pIVAfOHFT45f4AoDAltRbHIQomCipkCZxrNkfpOEHhJz/VKw== - dependencies: - "@babel/types" "^7.18.6" - "@jridgewell/gen-mapping" "^0.3.0" - jsesc "^2.5.1" - -"@babel/generator@^7.18.13", "@babel/generator@^7.18.6": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" - integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== - dependencies: - "@babel/types" "^7.18.13" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/generator@^7.19.0": +"@babel/generator@^7.19.0", "@babel/generator@^7.7.2": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== @@ -143,7 +104,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz#537ec8339d53e806ed422f1e06c8f17d55b96bb0" integrity sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA== @@ -263,35 +224,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.17.7", "@babel/helper-module-transforms@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" - integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" - integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-module-transforms@^7.19.0": +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== @@ -409,23 +342,14 @@ "@babel/traverse" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/helpers@^7.17.9": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" - integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== +"@babel/helpers@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" + integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/helpers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" - integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== - dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" "@babel/highlight@^7.10.4": version "7.12.13" @@ -445,17 +369,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.17.10": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" - integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== - -"@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.6": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" - integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== - -"@babel/parser@^7.19.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== @@ -1195,16 +1109,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.16.7", "@babel/template@^7.18.6", "@babel/template@^7.3.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" - integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/template@^7.18.10": +"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== @@ -1213,39 +1118,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.17.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" - integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" - integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.13" - "@babel/types" "^7.18.13" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.19.0": +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.7.2": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed" integrity sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA== @@ -1261,16 +1134,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.17.10", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.19.0": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== @@ -1658,7 +1522,7 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== From f84adc2ccf462c61627d61fed4a6a1fcc1dfb8f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 22:23:56 +0900 Subject: [PATCH 155/280] Bump doorkeeper from 5.5.4 to 5.6.0 (#19163) Bumps [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper) from 5.5.4 to 5.6.0. - [Release notes](https://github.com/doorkeeper-gem/doorkeeper/releases) - [Changelog](https://github.com/doorkeeper-gem/doorkeeper/blob/main/CHANGELOG.md) - [Commits](https://github.com/doorkeeper-gem/doorkeeper/compare/v5.5.4...v5.6.0) --- updated-dependencies: - dependency-name: doorkeeper dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 92b69782e..baefffb2f 100644 --- a/Gemfile +++ b/Gemfile @@ -46,7 +46,7 @@ gem 'omniauth-rails_csrf_protection', '~> 0.1' gem 'color_diff', '~> 0.1' gem 'discard', '~> 1.2' -gem 'doorkeeper', '~> 5.5' +gem 'doorkeeper', '~> 5.6' gem 'ed25519', '~> 1.3' gem 'fast_blank', '~> 1.0' gem 'fastimage' diff --git a/Gemfile.lock b/Gemfile.lock index 0c6aea49b..2caa5f2e1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -207,7 +207,7 @@ GEM docile (1.3.4) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - doorkeeper (5.5.4) + doorkeeper (5.6.0) railties (>= 5) dotenv (2.8.1) dotenv-rails (2.8.1) @@ -761,7 +761,7 @@ DEPENDENCIES devise-two-factor (~> 4.0) devise_pam_authenticatable2 (~> 9.2) discard (~> 1.2) - doorkeeper (~> 5.5) + doorkeeper (~> 5.6) dotenv-rails (~> 2.8) ed25519 (~> 1.3) fabrication (~> 2.30) From 479395013618a4bacad2e90620086ec7ccb67344 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 23:11:10 +0900 Subject: [PATCH 156/280] Bump jest from 28.1.3 to 29.0.3 (#19162) * Bump babel-jest from 28.1.3 to 29.0.3 Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 28.1.3 to 29.0.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.0.3/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump jest-environment-jsdom from 28.1.3 to 29.0.3 Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 28.1.3 to 29.0.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.0.3/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump jest from 28.1.3 to 29.0.3 Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.3 to 29.0.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.0.3/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../__snapshots__/avatar-test.js.snap | 4 +- .../__snapshots__/avatar_overlay-test.js.snap | 4 +- .../__snapshots__/display_name-test.js.snap | 2 +- package.json | 6 +- yarn.lock | 832 ++++++++---------- 5 files changed, 395 insertions(+), 453 deletions(-) diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap index 76ab3374a..1c200b184 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap @@ -6,7 +6,7 @@ exports[` Autoplay renders a animated avatar 1`] = ` onMouseEnter={[Function]} onMouseLeave={[Function]} style={ - Object { + { "backgroundImage": "url(/animated/alice.gif)", "backgroundSize": "100px 100px", "height": "100px", @@ -22,7 +22,7 @@ exports[` Still renders a still avatar 1`] = ` onMouseEnter={[Function]} onMouseLeave={[Function]} style={ - Object { + { "backgroundImage": "url(/static/alice.jpg)", "backgroundSize": "100px 100px", "height": "100px", diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap index d59fee42f..58f27a321 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap @@ -7,7 +7,7 @@ exports[` renders display name + account name 1`] = ` Foo

", } } diff --git a/package.json b/package.json index b0f8db84d..e177434b3 100644 --- a/package.json +++ b/package.json @@ -147,14 +147,14 @@ "@babel/eslint-parser": "^7.18.9", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", - "babel-jest": "^28.1.3", + "babel-jest": "^29.0.3", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.1", "eslint-plugin-react": "~7.31.6", - "jest": "^28.1.3", - "jest-environment-jsdom": "^28.1.3", + "jest": "^29.0.3", + "jest-environment-jsdom": "^29.0.3", "postcss-scss": "^4.0.4", "prettier": "^2.7.1", "raf": "^3.4.1", diff --git a/yarn.lock b/yarn.lock index f9ab55856..c1ae9694a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -607,7 +607,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-jsx@^7.18.6": +"@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== @@ -1308,110 +1308,110 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== +"@jest/console@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.0.3.tgz#a222ab87e399317a89db88a58eaec289519e807a" + integrity sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + jest-message-util "^29.0.3" + jest-util "^29.0.3" slash "^3.0.0" -"@jest/core@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" - integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== +"@jest/core@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.0.3.tgz#ba22a9cbd0c7ba36e04292e2093c547bf53ec1fd" + integrity sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ== dependencies: - "@jest/console" "^28.1.3" - "@jest/reporters" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/console" "^29.0.3" + "@jest/reporters" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^28.1.3" - jest-config "^28.1.3" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-resolve-dependencies "^28.1.3" - jest-runner "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - jest-watcher "^28.1.3" + jest-changed-files "^29.0.0" + jest-config "^29.0.3" + jest-haste-map "^29.0.3" + jest-message-util "^29.0.3" + jest-regex-util "^29.0.0" + jest-resolve "^29.0.3" + jest-resolve-dependencies "^29.0.3" + jest-runner "^29.0.3" + jest-runtime "^29.0.3" + jest-snapshot "^29.0.3" + jest-util "^29.0.3" + jest-validate "^29.0.3" + jest-watcher "^29.0.3" micromatch "^4.0.4" - pretty-format "^28.1.3" - rimraf "^3.0.0" + pretty-format "^29.0.3" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" - integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== +"@jest/environment@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.0.3.tgz#7745ec30a954e828e8cc6df6a13280d3b51d8f35" + integrity sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA== dependencies: - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/fake-timers" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" - jest-mock "^28.1.3" + jest-mock "^29.0.3" -"@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== +"@jest/expect-utils@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.0.3.tgz#f5bb86f5565bf2dacfca31ccbd887684936045b2" + integrity sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q== dependencies: - jest-get-type "^28.0.2" + jest-get-type "^29.0.0" -"@jest/expect@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" - integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== +"@jest/expect@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.0.3.tgz#9dc7c46354eeb7a348d73881fba6402f5fdb2c30" + integrity sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ== dependencies: - expect "^28.1.3" - jest-snapshot "^28.1.3" + expect "^29.0.3" + jest-snapshot "^29.0.3" -"@jest/fake-timers@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" - integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== +"@jest/fake-timers@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.0.3.tgz#ad5432639b715d45a86a75c47fd75019bc36b22c" + integrity sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-util "^28.1.3" + jest-message-util "^29.0.3" + jest-mock "^29.0.3" + jest-util "^29.0.3" -"@jest/globals@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" - integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== +"@jest/globals@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.0.3.tgz#681950c430fdc13ff9aa89b2d8d572ac0e4a1bf5" + integrity sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w== dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.0.3" + "@jest/expect" "^29.0.3" + "@jest/types" "^29.0.3" + jest-mock "^29.0.3" -"@jest/reporters@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" - integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== +"@jest/reporters@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.0.3.tgz#735f110e08b44b38729d8dbbb74063bdf5aba8a5" + integrity sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" + "@jest/console" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" + "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -1423,67 +1423,67 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - jest-worker "^28.1.3" + jest-message-util "^29.0.3" + jest-util "^29.0.3" + jest-worker "^29.0.3" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" terminal-link "^2.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== +"@jest/schemas@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" + integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== dependencies: "@sinclair/typebox" "^0.24.1" -"@jest/source-map@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" - integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== +"@jest/source-map@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.0.0.tgz#f8d1518298089f8ae624e442bbb6eb870ee7783c" + integrity sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ== dependencies: - "@jridgewell/trace-mapping" "^0.3.13" + "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== +"@jest/test-result@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.0.3.tgz#b03d8ef4c58be84cd5d5d3b24d4b4c8cabbf2746" + integrity sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg== dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/console" "^29.0.3" + "@jest/types" "^29.0.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" - integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== +"@jest/test-sequencer@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.0.3.tgz#0681061ad21fb8e293b49c4fdf7e631ca79240ba" + integrity sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ== dependencies: - "@jest/test-result" "^28.1.3" + "@jest/test-result" "^29.0.3" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" + jest-haste-map "^29.0.3" slash "^3.0.0" -"@jest/transform@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" - integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== +"@jest/transform@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.0.3.tgz#9eb1fed2072a0354f190569807d1250572fb0970" + integrity sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" + "@jest/types" "^29.0.3" + "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" + fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" + jest-haste-map "^29.0.3" + jest-regex-util "^29.0.0" + jest-util "^29.0.3" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1510,12 +1510,12 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== +"@jest/types@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.0.3.tgz#0be78fdddb1a35aeb2041074e55b860561c8ef63" + integrity sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A== dependencies: - "@jest/schemas" "^28.1.3" + "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -1554,7 +1554,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13": +"@jridgewell/trace-mapping@^0.3.12": version "0.3.14" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== @@ -1562,6 +1562,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.15": + version "0.3.15" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" + integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.9": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" @@ -1864,14 +1872,14 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/jsdom@^16.2.4": - version "16.2.14" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.14.tgz#26fe9da6a8870715b154bb84cd3b2e53433d8720" - integrity sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w== +"@types/jsdom@^20.0.0": + version "20.0.0" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.0.tgz#4414fb629465167f8b7b3804b9e067bdd99f1791" + integrity sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA== dependencies: "@types/node" "*" - "@types/parse5" "*" "@types/tough-cookie" "*" + parse5 "^7.0.0" "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" @@ -1908,11 +1916,6 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/parse5@*": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" - integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== - "@types/prettier@^2.1.5": version "2.2.3" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" @@ -2190,7 +2193,7 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.5, abab@^2.0.6: +abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== @@ -2615,15 +2618,15 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" - integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== +babel-jest@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.0.3.tgz#64e156a47a77588db6a669a88dedff27ed6e260f" + integrity sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg== dependencies: - "@jest/transform" "^28.1.3" + "@jest/transform" "^29.0.3" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.3" + babel-preset-jest "^29.0.2" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -2656,10 +2659,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" - integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== +babel-plugin-jest-hoist@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.2.tgz#ae61483a829a021b146c016c6ad39b8bcc37c2c8" + integrity sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2765,12 +2768,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" - integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== +babel-preset-jest@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.0.2.tgz#e14a7124e22b161551818d89e5bdcfb3b2b0eac7" + integrity sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA== dependencies: - babel-plugin-jest-hoist "^28.1.3" + babel-plugin-jest-hoist "^29.0.2" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -3262,15 +3265,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0, chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.2: +chalk@^4.0, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4012,7 +4007,7 @@ damerau-levenshtein@^1.0.8: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -data-urls@^3.0.1, data-urls@^3.0.2: +data-urls@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== @@ -4208,10 +4203,10 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== +diff-sequences@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.0.0.tgz#bae49972ef3933556bcb0800b72e8579d19d9e4f" + integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA== diffie-hellman@^5.0.0: version "5.0.3" @@ -4912,16 +4907,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== +expect@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.0.3.tgz#6be65ddb945202f143c4e07c083f4f39f3bd326f" + integrity sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q== dependencies: - "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + "@jest/expect-utils" "^29.0.3" + jest-get-type "^29.0.0" + jest-matcher-utils "^29.0.3" + jest-message-util "^29.0.3" + jest-util "^29.0.3" express@^4.17.1, express@^4.18.1: version "4.18.1" @@ -5833,7 +5828,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -6556,82 +6551,82 @@ jake@^10.8.5: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" - integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== +jest-changed-files@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.0.0.tgz#aa238eae42d9372a413dd9a8dadc91ca1806dce0" + integrity sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ== dependencies: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" - integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== +jest-circus@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.0.3.tgz#90faebc90295291cfc636b27dbd82e3bfb9e7a48" + integrity sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg== dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.0.3" + "@jest/expect" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" + jest-each "^29.0.3" + jest-matcher-utils "^29.0.3" + jest-message-util "^29.0.3" + jest-runtime "^29.0.3" + jest-snapshot "^29.0.3" + jest-util "^29.0.3" p-limit "^3.1.0" - pretty-format "^28.1.3" + pretty-format "^29.0.3" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" - integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== +jest-cli@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.0.3.tgz#fd8f0ef363a7a3d9c53ef62e0651f18eeffa77b9" + integrity sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ== dependencies: - "@jest/core" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/core" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/types" "^29.0.3" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" + jest-config "^29.0.3" + jest-util "^29.0.3" + jest-validate "^29.0.3" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" - integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== +jest-config@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.0.3.tgz#c2e52a8f5adbd18de79f99532d8332a19e232f13" + integrity sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^28.1.3" - "@jest/types" "^28.1.3" - babel-jest "^28.1.3" + "@jest/test-sequencer" "^29.0.3" + "@jest/types" "^29.0.3" + babel-jest "^29.0.3" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^28.1.3" - jest-environment-node "^28.1.3" - jest-get-type "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-runner "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" + jest-circus "^29.0.3" + jest-environment-node "^29.0.3" + jest-get-type "^29.0.0" + jest-regex-util "^29.0.0" + jest-resolve "^29.0.3" + jest-runner "^29.0.3" + jest-util "^29.0.3" + jest-validate "^29.0.3" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^28.1.3" + pretty-format "^29.0.3" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6645,128 +6640,128 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== +jest-diff@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.0.3.tgz#41cc02409ad1458ae1bf7684129a3da2856341ac" + integrity sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg== dependencies: chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + diff-sequences "^29.0.0" + jest-get-type "^29.0.0" + pretty-format "^29.0.3" -jest-docblock@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" - integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== +jest-docblock@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.0.0.tgz#3151bcc45ed7f5a8af4884dcc049aee699b4ceae" + integrity sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw== dependencies: detect-newline "^3.0.0" -jest-each@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" - integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== +jest-each@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.0.3.tgz#7ef3157580b15a609d7ef663dd4fc9b07f4e1299" + integrity sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" chalk "^4.0.0" - jest-get-type "^28.0.2" - jest-util "^28.1.3" - pretty-format "^28.1.3" + jest-get-type "^29.0.0" + jest-util "^29.0.3" + pretty-format "^29.0.3" -jest-environment-jsdom@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz#2d4e5d61b7f1d94c3bddfbb21f0308ee506c09fb" - integrity sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg== +jest-environment-jsdom@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.0.3.tgz#0c6ee841133dd6acbe957bceaceea93b7ec60ca9" + integrity sha512-KIGvpm12c71hoYTjL4wC2c8K6KfhOHJqJtaHc1IApu5rG047YWZoEP13BlbucWfzGISBrmli8KFqdhdQEa8Wnw== dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/jsdom" "^16.2.4" + "@jest/environment" "^29.0.3" + "@jest/fake-timers" "^29.0.3" + "@jest/types" "^29.0.3" + "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" - jsdom "^19.0.0" + jest-mock "^29.0.3" + jest-util "^29.0.3" + jsdom "^20.0.0" -jest-environment-node@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" - integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== +jest-environment-node@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.0.3.tgz#293804b1e0fa5f0e354dacbe510655caa478a3b2" + integrity sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg== dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.0.3" + "@jest/fake-timers" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" + jest-mock "^29.0.3" + jest-util "^29.0.3" jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== +jest-get-type@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" + integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== -jest-haste-map@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" - integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== +jest-haste-map@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.0.3.tgz#d7f3f7180f558d760eacc5184aac5a67f20ef939" + integrity sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - jest-worker "^28.1.3" + jest-regex-util "^29.0.0" + jest-util "^29.0.3" + jest-worker "^29.0.3" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" - integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== +jest-leak-detector@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz#e85cf3391106a7a250850b6766b508bfe9c7bc6f" + integrity sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ== dependencies: - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + jest-get-type "^29.0.0" + pretty-format "^29.0.3" -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== +jest-matcher-utils@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz#b8305fd3f9e27cdbc210b21fc7dbba92d4e54560" + integrity sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w== dependencies: chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + jest-diff "^29.0.3" + jest-get-type "^29.0.0" + pretty-format "^29.0.3" -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== +jest-message-util@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.0.3.tgz#f0254e1ffad21890c78355726202cc91d0a40ea8" + integrity sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^28.1.3" + pretty-format "^29.0.3" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" - integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== +jest-mock@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.0.3.tgz#4f0093f6a9cb2ffdb9c44a07a3912f0c098c8de9" + integrity sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6774,154 +6769,155 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== +jest-regex-util@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de" + integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== -jest-resolve-dependencies@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" - integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== +jest-resolve-dependencies@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.3.tgz#f23a54295efc6374b86b198cf8efed5606d6b762" + integrity sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw== dependencies: - jest-regex-util "^28.0.2" - jest-snapshot "^28.1.3" + jest-regex-util "^29.0.0" + jest-snapshot "^29.0.3" -jest-resolve@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" - integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== +jest-resolve@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.0.3.tgz#329a3431e3b9eb6629a2cd483e9bed95b26827b9" + integrity sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" + jest-haste-map "^29.0.3" jest-pnp-resolver "^1.2.2" - jest-util "^28.1.3" - jest-validate "^28.1.3" + jest-util "^29.0.3" + jest-validate "^29.0.3" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" - integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== +jest-runner@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.0.3.tgz#2e47fe1e8777aea9b8970f37e8f83630b508fb87" + integrity sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw== dependencies: - "@jest/console" "^28.1.3" - "@jest/environment" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/console" "^29.0.3" + "@jest/environment" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" chalk "^4.0.0" emittery "^0.10.2" graceful-fs "^4.2.9" - jest-docblock "^28.1.1" - jest-environment-node "^28.1.3" - jest-haste-map "^28.1.3" - jest-leak-detector "^28.1.3" - jest-message-util "^28.1.3" - jest-resolve "^28.1.3" - jest-runtime "^28.1.3" - jest-util "^28.1.3" - jest-watcher "^28.1.3" - jest-worker "^28.1.3" + jest-docblock "^29.0.0" + jest-environment-node "^29.0.3" + jest-haste-map "^29.0.3" + jest-leak-detector "^29.0.3" + jest-message-util "^29.0.3" + jest-resolve "^29.0.3" + jest-runtime "^29.0.3" + jest-util "^29.0.3" + jest-watcher "^29.0.3" + jest-worker "^29.0.3" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" - integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== +jest-runtime@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.0.3.tgz#5a823ec5902257519556a4e5a71a868e8fd788aa" + integrity sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ== dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/globals" "^28.1.3" - "@jest/source-map" "^28.1.2" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.0.3" + "@jest/fake-timers" "^29.0.3" + "@jest/globals" "^29.0.3" + "@jest/source-map" "^29.0.0" + "@jest/test-result" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" + "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" + jest-haste-map "^29.0.3" + jest-message-util "^29.0.3" + jest-mock "^29.0.3" + jest-regex-util "^29.0.0" + jest-resolve "^29.0.3" + jest-snapshot "^29.0.3" + jest-util "^29.0.3" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" - integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== +jest-snapshot@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.0.3.tgz#0a024706986a915a6eefae74d7343069d2fc8eef" + integrity sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/expect-utils" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^28.1.3" + expect "^29.0.3" graceful-fs "^4.2.9" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - jest-haste-map "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + jest-diff "^29.0.3" + jest-get-type "^29.0.0" + jest-haste-map "^29.0.3" + jest-matcher-utils "^29.0.3" + jest-message-util "^29.0.3" + jest-util "^29.0.3" natural-compare "^1.4.0" - pretty-format "^28.1.3" + pretty-format "^29.0.3" semver "^7.3.5" -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== +jest-util@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.0.3.tgz#06d1d77f9a1bea380f121897d78695902959fbc0" + integrity sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" - integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== +jest-validate@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.0.3.tgz#f9521581d7344685428afa0a4d110e9c519aeeb6" + integrity sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^28.0.2" + jest-get-type "^29.0.0" leven "^3.1.0" - pretty-format "^28.1.3" + pretty-format "^29.0.3" -jest-watcher@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== +jest-watcher@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.0.3.tgz#8e220d1cc4f8029875e82015d084cab20f33d57f" + integrity sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw== dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/test-result" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.10.2" - jest-util "^28.1.3" + jest-util "^29.0.3" string-length "^4.0.1" jest-worker@^26.2.1: @@ -6942,24 +6938,24 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== +jest-worker@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.0.3.tgz#c2ba0aa7e41eec9eb0be8e8a322ae6518df72647" + integrity sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" - integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== +jest@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.0.3.tgz#5227a0596d30791b2649eea347e4aa97f734944d" + integrity sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ== dependencies: - "@jest/core" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/core" "^29.0.3" + "@jest/types" "^29.0.3" import-local "^3.0.2" - jest-cli "^28.1.3" + jest-cli "^29.0.3" js-base64@^2.1.9: version "2.6.4" @@ -6986,39 +6982,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsdom@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" - integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== - dependencies: - abab "^2.0.5" - acorn "^8.5.0" - acorn-globals "^6.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.1" - decimal.js "^10.3.1" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^3.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^10.0.0" - ws "^8.2.3" - xml-name-validator "^4.0.0" - jsdom@^20.0.0: version "20.0.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.0.tgz#882825ac9cc5e5bbee704ba16143e1fa78361ebf" @@ -8353,11 +8316,6 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parse5@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" @@ -9032,13 +8990,12 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== +pretty-format@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.0.3.tgz#23d5f8cabc9cbf209a77d49409d093d61166a811" + integrity sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q== dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" + "@jest/schemas" "^29.0.0" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -9881,7 +9838,7 @@ rimraf@^2.5.4, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -9974,13 +9931,6 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - saxes@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" @@ -11805,14 +11755,6 @@ whatwg-mimetype@^3.0.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== -whatwg-url@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" - integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - whatwg-url@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" @@ -12109,7 +12051,7 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.2.3, ws@^8.8.0, ws@^8.8.1: +ws@^8.8.0, ws@^8.8.1: version "8.8.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== From 0aacf00f5b77264537aa87fb8f78d7346feb1ec4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 23:12:25 +0900 Subject: [PATCH 157/280] Bump rails from 6.1.6.1 to 6.1.7 (#19164) Bumps [rails](https://github.com/rails/rails) from 6.1.6.1 to 6.1.7. - [Release notes](https://github.com/rails/rails/releases) - [Commits](https://github.com/rails/rails/compare/v6.1.6.1...v6.1.7) --- updated-dependencies: - dependency-name: rails dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 108 +++++++++++++++++++++++++-------------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/Gemfile b/Gemfile index baefffb2f..d90c17f14 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem 'pkg-config', '~> 1.4' gem 'rexml', '~> 3.2' gem 'puma', '~> 5.6' -gem 'rails', '~> 6.1.6' +gem 'rails', '~> 6.1.7' gem 'sprockets', '~> 3.7.2' gem 'thor', '~> 1.2' gem 'rack', '~> 2.2.4' diff --git a/Gemfile.lock b/Gemfile.lock index 2caa5f2e1..8b8a15623 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,40 +10,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.1.6.1) - actionpack (= 6.1.6.1) - activesupport (= 6.1.6.1) + actioncable (6.1.7) + actionpack (= 6.1.7) + activesupport (= 6.1.7) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.6.1) - actionpack (= 6.1.6.1) - activejob (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionmailbox (6.1.7) + actionpack (= 6.1.7) + activejob (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) mail (>= 2.7.1) - actionmailer (6.1.6.1) - actionpack (= 6.1.6.1) - actionview (= 6.1.6.1) - activejob (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionmailer (6.1.7) + actionpack (= 6.1.7) + actionview (= 6.1.7) + activejob (= 6.1.7) + activesupport (= 6.1.7) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.6.1) - actionview (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionpack (6.1.7) + actionview (= 6.1.7) + activesupport (= 6.1.7) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.6.1) - actionpack (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + actiontext (6.1.7) + actionpack (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) nokogiri (>= 1.8.5) - actionview (6.1.6.1) - activesupport (= 6.1.6.1) + actionview (6.1.7) + activesupport (= 6.1.7) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -54,22 +54,22 @@ GEM case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.8) - activejob (6.1.6.1) - activesupport (= 6.1.6.1) + activejob (6.1.7) + activesupport (= 6.1.7) globalid (>= 0.3.6) - activemodel (6.1.6.1) - activesupport (= 6.1.6.1) - activerecord (6.1.6.1) - activemodel (= 6.1.6.1) - activesupport (= 6.1.6.1) - activestorage (6.1.6.1) - actionpack (= 6.1.6.1) - activejob (= 6.1.6.1) - activerecord (= 6.1.6.1) - activesupport (= 6.1.6.1) + activemodel (6.1.7) + activesupport (= 6.1.7) + activerecord (6.1.7) + activemodel (= 6.1.7) + activesupport (= 6.1.7) + activestorage (6.1.7) + actionpack (= 6.1.7) + activejob (= 6.1.7) + activerecord (= 6.1.7) + activesupport (= 6.1.7) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.6.1) + activesupport (6.1.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -500,20 +500,20 @@ GEM rack rack-test (2.0.2) rack (>= 1.3) - rails (6.1.6.1) - actioncable (= 6.1.6.1) - actionmailbox (= 6.1.6.1) - actionmailer (= 6.1.6.1) - actionpack (= 6.1.6.1) - actiontext (= 6.1.6.1) - actionview (= 6.1.6.1) - activejob (= 6.1.6.1) - activemodel (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + rails (6.1.7) + actioncable (= 6.1.7) + actionmailbox (= 6.1.7) + actionmailer (= 6.1.7) + actionpack (= 6.1.7) + actiontext (= 6.1.7) + actionview (= 6.1.7) + activejob (= 6.1.7) + activemodel (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) bundler (>= 1.15.0) - railties (= 6.1.6.1) + railties (= 6.1.7) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -529,9 +529,9 @@ GEM railties (>= 6.0.0, < 7) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (6.1.6.1) - actionpack (= 6.1.6.1) - activesupport (= 6.1.6.1) + railties (6.1.7) + actionpack (= 6.1.7) + activesupport (= 6.1.7) method_source rake (>= 12.2) thor (~> 1.0) @@ -816,7 +816,7 @@ DEPENDENCIES rack (~> 2.2.4) rack-attack (~> 6.6) rack-cors (~> 1.1) - rails (~> 6.1.6) + rails (~> 6.1.7) rails-controller-testing (~> 1.0) rails-i18n (~> 6.0) rails-settings-cached (~> 0.6) From 526b4b3677dfc5139289b405185024c85bba14dc Mon Sep 17 00:00:00 2001 From: trwnh Date: Thu, 15 Sep 2022 08:35:06 -0500 Subject: [PATCH 158/280] Fix breaking change in admin account API (#19176) * Fix breaking change in admin account API Ensure that `ip` is a String value and not returning a raw database entry * please rubocop --- app/serializers/rest/admin/account_serializer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/serializers/rest/admin/account_serializer.rb b/app/serializers/rest/admin/account_serializer.rb index 3480e8c5a..2fbc7b1cb 100644 --- a/app/serializers/rest/admin/account_serializer.rb +++ b/app/serializers/rest/admin/account_serializer.rb @@ -77,6 +77,6 @@ class REST::Admin::AccountSerializer < ActiveModel::Serializer end def ip - ips&.first + ips&.first&.ip end end From 6307634db560e30c0f21f45c2a35a2a08bb3b778 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 17 Sep 2022 10:03:03 +0900 Subject: [PATCH 159/280] Bump eslint-plugin-react from 7.31.6 to 7.31.8 (#19169) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.31.6 to 7.31.8. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.6...v7.31.8) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e177434b3..41a1fcbf0 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.1", - "eslint-plugin-react": "~7.31.6", + "eslint-plugin-react": "~7.31.8", "jest": "^29.0.3", "jest-environment-jsdom": "^29.0.3", "postcss-scss": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index c1ae9694a..533e2932e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4672,10 +4672,10 @@ eslint-plugin-promise@~6.0.1: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== -eslint-plugin-react@~7.31.6: - version "7.31.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.6.tgz#55ec176be94917ecde3f3ca0e1363073193e241a" - integrity sha512-CXu4eu28sb8Sd2+cyUYsJVyDvpTlaXPG+bOzzpS9IzZKtye96AYX3ZmHQ6ayn/OAIQ/ufDJP8ElPWd63Pepn9w== +eslint-plugin-react@~7.31.8: + version "7.31.8" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" + integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" From 2163cd333d1482fb6bf1d5bffc215a1e66030127 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 17 Sep 2022 10:03:19 +0900 Subject: [PATCH 160/280] Bump sass from 1.54.8 to 1.54.9 (#19170) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.8 to 1.54.9. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.8...1.54.9) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 41a1fcbf0..18867a51f 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.8", + "sass": "^1.54.9", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 533e2932e..a7a5e3746 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9917,10 +9917,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.8: - version "1.54.8" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.8.tgz#4adef0dd86ea2b1e4074f551eeda4fc5f812a996" - integrity sha512-ib4JhLRRgbg6QVy6bsv5uJxnJMTS2soVcCp9Y88Extyy13A8vV0G1fAwujOzmNkFQbR3LvedudAMbtuNRPbQww== +sass@^1.54.9: + version "1.54.9" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.9.tgz#b05f14ed572869218d1a76961de60cd647221762" + integrity sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 58d219621ef89d05c0dde8c6def2a58356d28b43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 17 Sep 2022 10:03:46 +0900 Subject: [PATCH 161/280] Bump @rails/ujs from 6.1.6 to 6.1.7 (#19171) Bumps [@rails/ujs](https://github.com/rails/rails) from 6.1.6 to 6.1.7. - [Release notes](https://github.com/rails/rails/releases) - [Commits](https://github.com/rails/rails/compare/v6.1.6...v6.1.7) --- updated-dependencies: - dependency-name: "@rails/ujs" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 18867a51f..d2d2c89bd 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@babel/runtime": "^7.19.0", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", - "@rails/ujs": "^6.1.6", + "@rails/ujs": "^6.1.7", "array-includes": "^3.1.5", "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", diff --git a/yarn.lock b/yarn.lock index a7a5e3746..5da3452f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1646,10 +1646,10 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71" integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA== -"@rails/ujs@^6.1.6": - version "6.1.6" - resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.6.tgz#de486ae0a663e1bed637a012cbb2739bfcfa2031" - integrity sha512-2M4zlthYmOC6X/tcPcFd//sIL26a7JbCpGNl8uIrQf+pR1Z47uhYt9cOwVqJTJZPurdy2k+YY3Pn64pqruAPEA== +"@rails/ujs@^6.1.7": + version "6.1.7" + resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.7.tgz#b09dc5b2105dd267e8374c47e4490240451dc7f6" + integrity sha512-0e7WQ4LE/+LEfW2zfAw9ppsB6A8RmxbdAUPAF++UT80epY+7emuQDkKXmaK0a9lp6An50RvzezI0cIQjp1A58w== "@rollup/plugin-babel@^5.2.0": version "5.3.1" From 14c7c9e40e72ac7ba2ba098b2c11d35ba463b56a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 18 Sep 2022 16:50:12 +0900 Subject: [PATCH 162/280] Bump blurhash from 1.1.5 to 2.0.0 (#19168) Bumps [blurhash](https://github.com/woltapp/blurhash) from 1.1.5 to 2.0.0. - [Release notes](https://github.com/woltapp/blurhash/releases) - [Commits](https://github.com/woltapp/blurhash/commits) --- updated-dependencies: - dependency-name: blurhash dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d2d2c89bd..b57108c04 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "babel-plugin-preval": "^5.1.0", "babel-plugin-react-intl": "^6.2.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "blurhash": "^1.1.5", + "blurhash": "^2.0.0", "classnames": "^2.3.1", "cocoon-js-vanilla": "^1.3.0", "color-blend": "^3.0.1", diff --git a/yarn.lock b/yarn.lock index 5da3452f2..04837a50c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2836,10 +2836,10 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -blurhash@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.1.5.tgz#3034104cd5dce5a3e5caa871ae2f0f1f2d0ab566" - integrity sha512-a+LO3A2DfxTaTztsmkbLYmUzUeApi0LZuKalwbNmqAHR6HhJGMt1qSV/R3wc+w4DL28holjqO3Bg74aUGavGjg== +blurhash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-2.0.0.tgz#c2e6392043d5355241cf9ddaec9359023ea57a40" + integrity sha512-fdEZnyJZ5E5s9neCfZUMSMkKfMtdKz1fG53t/iYvMjUFUsDnyZ1YnRRayKBK/B8cilNwe5gaIrPF8QlLrukEZQ== bmp-js@^0.1.0: version "0.1.0" From 1145dbd327ae9b56357cc488801d723051f58e0b Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 20 Sep 2022 23:30:26 +0200 Subject: [PATCH 163/280] Improve error reporting and logging when processing remote accounts (#15605) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add a more descriptive PrivateNetworkAddressError exception class * Remove unnecessary exception class to rescue clause * Remove unnecessary include to JsonLdHelper * Give more neutral error message when too many webfinger redirects * Remove unnecessary guard condition * Rework how “ActivityPub::FetchRemoteAccountService” handles errors Add “suppress_errors” keyword argument to avoid raising errors in ActivityPub::FetchRemoteAccountService#call (default/previous behavior). * Rework how “ActivityPub::FetchRemoteKeyService” handles errors Add “suppress_errors” keyword argument to avoid raising errors in ActivityPub::FetchRemoteKeyService#call (default/previous behavior). * Fix Webfinger::RedirectError not being a subclass of Webfinger::Error * Add suppress_errors option to ResolveAccountService Defaults to true (to preserve previous behavior). If set to false, errors will be raised instead of caught, allowing the caller to be informed of what went wrong. * Return more precise error when failing to fetch account signing AP payloads * Add tests * Fixes * Refactor error handling a bit * Fix various issues * Add specific error when provided Digest is not 256 bits of base64-encoded data * Please CodeClimate * Improve webfinger error reporting --- .../concerns/signature_verification.rb | 46 ++++++++++++---- app/lib/request.rb | 6 +-- app/lib/webfinger.rb | 2 +- .../fetch_remote_account_service.rb | 38 +++++++++----- .../activitypub/fetch_remote_key_service.rb | 34 ++++++++---- .../activitypub/process_account_service.rb | 2 - app/services/resolve_account_service.rb | 12 ++--- lib/exceptions.rb | 9 ++++ .../fetch_remote_account_service_spec.rb | 52 +++++++++++++++++++ spec/services/resolve_account_service_spec.rb | 4 +- 10 files changed, 158 insertions(+), 47 deletions(-) diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 4dd0cac55..89dc828f4 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -93,11 +93,15 @@ module SignatureVerification return account unless verify_signature(account, signature, compare_signed_string).nil? - @signature_verification_failure_reason = "Verification failed for #{account.username}@#{account.domain} #{account.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)" - @signed_request_account = nil + fail_with! "Verification failed for #{account.username}@#{account.domain} #{account.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)" rescue SignatureVerificationError => e - @signature_verification_failure_reason = e.message - @signed_request_account = nil + fail_with! e.message + rescue HTTP::Error, OpenSSL::SSL::SSLError => e + fail_with! "Failed to fetch remote data: #{e.message}" + rescue Mastodon::UnexptectedResponseError + fail_with! 'Failed to fetch remote data (got unexpected reply from server)' + rescue Stoplight::Error::RedLight + fail_with! 'Fetching attempt skipped because of recent connection failure' end def request_body @@ -106,6 +110,11 @@ module SignatureVerification private + def fail_with!(message) + @signature_verification_failure_reason = message + @signed_request_account = nil + end + def signature_params @signature_params ||= begin raw_signature = request.headers['Signature'] @@ -138,7 +147,17 @@ module SignatureVerification digests = request.headers['Digest'].split(',').map { |digest| digest.split('=', 2) }.map { |key, value| [key.downcase, value] } sha256 = digests.assoc('sha-256') raise SignatureVerificationError, "Mastodon only supports SHA-256 in Digest header. Offered algorithms: #{digests.map(&:first).join(', ')}" if sha256.nil? - raise SignatureVerificationError, "Invalid Digest value. Computed SHA-256 digest: #{body_digest}; given: #{sha256[1]}" if body_digest != sha256[1] + + return if body_digest == sha256[1] + + digest_size = begin + Base64.strict_decode64(sha256[1].strip).length + rescue ArgumentError + raise SignatureVerificationError, "Invalid Digest value. The provided Digest value is not a valid base64 string. Given digest: #{sha256[1]}" + end + + raise SignatureVerificationError, "Invalid Digest value. The provided Digest value is not a SHA-256 digest. Given digest: #{sha256[1]}" if digest_size != 32 + raise SignatureVerificationError, "Invalid Digest value. Computed SHA-256 digest: #{body_digest}; given: #{sha256[1]}" end def verify_signature(account, signature, compare_signed_string) @@ -216,19 +235,20 @@ module SignatureVerification end if key_id.start_with?('acct:') - stoplight_wrap_request { ResolveAccountService.new.call(key_id.gsub(/\Aacct:/, '')) } + stoplight_wrap_request { ResolveAccountService.new.call(key_id.gsub(/\Aacct:/, ''), suppress_errors: false) } elsif !ActivityPub::TagManager.instance.local_uri?(key_id) account = ActivityPub::TagManager.instance.uri_to_resource(key_id, Account) - account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false) } + account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false, suppress_errors: false) } account end - rescue Mastodon::HostValidationError - nil + rescue Mastodon::PrivateNetworkAddressError => e + raise SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})" + rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteAccountService::Error, ActivityPub::FetchRemoteKeyService::Error, Webfinger::Error => e + raise SignatureVerificationError, e.message end def stoplight_wrap_request(&block) Stoplight("source:#{request.remote_ip}", &block) - .with_fallback { nil } .with_threshold(1) .with_cool_off_time(5.minutes.seconds) .with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) } @@ -237,6 +257,10 @@ module SignatureVerification def account_refresh_key(account) return if account.local? || !account.activitypub? - ActivityPub::FetchRemoteAccountService.new.call(account.uri, only_key: true) + ActivityPub::FetchRemoteAccountService.new.call(account.uri, only_key: true, suppress_errors: false) + rescue Mastodon::PrivateNetworkAddressError => e + raise SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})" + rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteAccountService::Error, Webfinger::Error => e + raise SignatureVerificationError, e.message end end diff --git a/app/lib/request.rb b/app/lib/request.rb index f5123d776..eac04c798 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -208,7 +208,7 @@ class Request addresses.each do |address| begin - check_private_address(address) + check_private_address(address, host) sock = ::Socket.new(address.is_a?(Resolv::IPv6) ? ::Socket::AF_INET6 : ::Socket::AF_INET, ::Socket::SOCK_STREAM, 0) sockaddr = ::Socket.pack_sockaddr_in(port, address.to_s) @@ -264,10 +264,10 @@ class Request alias new open - def check_private_address(address) + def check_private_address(address, host) addr = IPAddr.new(address.to_s) return if private_address_exceptions.any? { |range| range.include?(addr) } - raise Mastodon::HostValidationError if PrivateAddressCheck.private_address?(addr) + raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr) end def private_address_exceptions diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb index a681e0815..7c0c10c33 100644 --- a/app/lib/webfinger.rb +++ b/app/lib/webfinger.rb @@ -3,7 +3,7 @@ class Webfinger class Error < StandardError; end class GoneError < Error; end - class RedirectError < StandardError; end + class RedirectError < Error; end class Response attr_reader :uri diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb index 9d01f5386..d7d739c59 100644 --- a/app/services/activitypub/fetch_remote_account_service.rb +++ b/app/services/activitypub/fetch_remote_account_service.rb @@ -5,10 +5,12 @@ class ActivityPub::FetchRemoteAccountService < BaseService include DomainControlHelper include WebfingerHelper + class Error < StandardError; end + SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze # Does a WebFinger roundtrip on each call, unless `only_key` is true - def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false) + def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true) return if domain_not_allowed?(uri) return ActivityPub::TagManager.instance.uri_to_resource(uri, Account) if ActivityPub::TagManager.instance.local_uri?(uri) @@ -18,38 +20,50 @@ class ActivityPub::FetchRemoteAccountService < BaseService else body_to_json(prefetched_body, compare_id: id ? uri : nil) end + rescue Oj::ParseError + raise Error, "Error parsing JSON-LD document #{uri}" end - return if !supported_context? || !expected_type? || (break_on_redirect && @json['movedTo'].present?) + raise Error, "Error fetching actor JSON at #{uri}" if @json.nil? + raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context? + raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type? + raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present? @uri = @json['id'] @username = @json['preferredUsername'] @domain = Addressable::URI.parse(@uri).normalized_host - return unless only_key || verified_webfinger? + check_webfinger! unless only_key ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key) - rescue Oj::ParseError - nil + rescue Error => e + Rails.logger.debug "Fetching account #{uri} failed: #{e.message}" + raise unless suppress_errors end private - def verified_webfinger? + def check_webfinger! webfinger = webfinger!("acct:#{@username}@#{@domain}") confirmed_username, confirmed_domain = split_acct(webfinger.subject) - return webfinger.link('self', 'href') == @uri if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? + if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + return + end webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}") @username, @domain = split_acct(webfinger.subject) - return false unless @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? - return false if webfinger.link('self', 'href') != @uri + unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? + raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" + end - true - rescue Webfinger::Error - false + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + rescue Webfinger::RedirectError => e + raise Error, e.message + rescue Webfinger::Error => e + raise Error, "Webfinger error when resolving #{@username}@#{@domain}: #{e.message}" end def split_acct(acct) diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb index c48288b3b..01008d883 100644 --- a/app/services/activitypub/fetch_remote_key_service.rb +++ b/app/services/activitypub/fetch_remote_key_service.rb @@ -3,9 +3,11 @@ class ActivityPub::FetchRemoteKeyService < BaseService include JsonLdHelper + class Error < StandardError; end + # Returns account that owns the key - def call(uri, id: true, prefetched_body: nil) - return if uri.blank? + def call(uri, id: true, prefetched_body: nil, suppress_errors: true) + raise Error, 'No key URI given' if uri.blank? if prefetched_body.nil? if id @@ -13,7 +15,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService if person? @json = fetch_resource(@json['id'], true) elsif uri != @json['id'] - return + raise Error, "Fetched URI #{uri} has wrong id #{@json['id']}" end else @json = fetch_resource(uri, id) @@ -22,21 +24,29 @@ class ActivityPub::FetchRemoteKeyService < BaseService @json = body_to_json(prefetched_body, compare_id: id ? uri : nil) end - return unless supported_context?(@json) && expected_type? - return find_account(@json['id'], @json) if person? + raise Error, "Unable to fetch key JSON at #{uri}" if @json.nil? + raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?(@json) + raise Error, "Unexpected object type for key #{uri}" unless expected_type? + return find_account(@json['id'], @json, suppress_errors) if person? @owner = fetch_resource(owner_uri, true) - return unless supported_context?(@owner) && confirmed_owner? + raise Error, "Unable to fetch actor JSON #{owner_uri}" if @owner.nil? + raise Error, "Unsupported JSON-LD context for document #{owner_uri}" unless supported_context?(@owner) + raise Error, "Unexpected object type for actor #{owner_uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_owner_type? + raise Error, "publicKey id for #{owner_uri} does not correspond to #{@json['id']}" unless confirmed_owner? - find_account(owner_uri, @owner) + find_account(owner_uri, @owner, suppress_errors) + rescue Error => e + Rails.logger.debug "Fetching key #{uri} failed: #{e.message}" + raise unless suppress_errors end private - def find_account(uri, prefetched_body) + def find_account(uri, prefetched_body, suppress_errors) account = ActivityPub::TagManager.instance.uri_to_resource(uri, Account) - account ||= ActivityPub::FetchRemoteAccountService.new.call(uri, prefetched_body: prefetched_body) + account ||= ActivityPub::FetchRemoteAccountService.new.call(uri, prefetched_body: prefetched_body, suppress_errors: suppress_errors) account end @@ -56,7 +66,11 @@ class ActivityPub::FetchRemoteKeyService < BaseService @owner_uri ||= value_or_id(@json['owner']) end + def expected_owner_type? + equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) + end + def confirmed_owner? - equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && value_or_id(@owner['publicKey']) == @json['id'] + value_or_id(@owner['publicKey']) == @json['id'] end end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 34750dba6..456b3524b 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -32,8 +32,6 @@ class ActivityPub::ProcessAccountService < BaseService process_duplicate_accounts! if @options[:verified_webfinger] end - return if @account.nil? - after_protocol_change! if protocol_changed? after_key_change! if key_changed? && !@options[:signed_with_known_key] clear_tombstones! if key_changed? diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index b55e45409..e3b370968 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true class ResolveAccountService < BaseService - include JsonLdHelper include DomainControlHelper include WebfingerHelper include Redisable @@ -13,6 +12,7 @@ class ResolveAccountService < BaseService # @param [Hash] options # @option options [Boolean] :redirected Do not follow further Webfinger redirects # @option options [Boolean] :skip_webfinger Do not attempt any webfinger query or refreshing account data + # @option options [Boolean] :suppress_errors When failing, return nil instead of raising an error # @return [Account] def call(uri, options = {}) return if uri.blank? @@ -52,15 +52,15 @@ class ResolveAccountService < BaseService # either needs to be created, or updated from fresh data fetch_account! - rescue Webfinger::Error, Oj::ParseError => e + rescue Webfinger::Error => e Rails.logger.debug "Webfinger query for #{@uri} failed: #{e}" - nil + raise unless @options[:suppress_errors] end private def process_options!(uri, options) - @options = options + @options = { suppress_errors: true }.merge(options) if uri.is_a?(Account) @account = uri @@ -96,7 +96,7 @@ class ResolveAccountService < BaseService @username, @domain = split_acct(@webfinger.subject) unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? - raise Webfinger::RedirectError, "The URI #{uri} tries to hijack #{@username}@#{@domain}" + raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" end rescue Webfinger::GoneError @gone = true @@ -110,7 +110,7 @@ class ResolveAccountService < BaseService return unless activitypub_ready? with_lock("resolve:#{@username}@#{@domain}") do - @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url) + @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url, suppress_errors: @options[:suppress_errors]) end @account diff --git a/lib/exceptions.rb b/lib/exceptions.rb index 0c677b660..3c5ba226b 100644 --- a/lib/exceptions.rb +++ b/lib/exceptions.rb @@ -25,4 +25,13 @@ module Mastodon end end end + + class PrivateNetworkAddressError < HostValidationError + attr_reader :host + + def initialize(host) + @host = host + super() + end + end end diff --git a/spec/services/activitypub/fetch_remote_account_service_spec.rb b/spec/services/activitypub/fetch_remote_account_service_spec.rb index aa13f0a9b..ec6f1f41d 100644 --- a/spec/services/activitypub/fetch_remote_account_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_account_service_spec.rb @@ -119,6 +119,58 @@ RSpec.describe ActivityPub::FetchRemoteAccountService, type: :service do include_examples 'sets profile data' end + context 'when WebFinger returns a different URI' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'does not create account' do + expect(account).to be_nil + end + end + + context 'when WebFinger returns a different URI after a redirection' do + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'looks up "redirected" webfinger' do + account + expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once + end + + it 'does not create account' do + expect(account).to be_nil + end + end + context 'with wrong id' do it 'does not create account' do expect(subject.call('https://fake.address/@foo', prefetched_body: Oj.dump(actor))).to be_nil diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb index 8c302e1d8..654606bea 100644 --- a/spec/services/resolve_account_service_spec.rb +++ b/spec/services/resolve_account_service_spec.rb @@ -137,8 +137,8 @@ RSpec.describe ResolveAccountService, type: :service do stub_request(:get, 'https://evil.example.com/.well-known/webfinger?resource=acct:foo@evil.example.com').to_return(body: Oj.dump(webfinger2), headers: { 'Content-Type': 'application/jrd+json' }) end - it 'returns new remote account' do - expect { subject.call('Foo@redirected.example.com') }.to raise_error Webfinger::RedirectError + it 'does not return a new remote account' do + expect(subject.call('Foo@redirected.example.com')).to be_nil end end From 7b38cb88caa46a47eb7b18f2211ef768923568aa Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 20 Sep 2022 23:49:00 +0200 Subject: [PATCH 164/280] Fix ProcessMentionService swallowing unprocessed mentions to unconfirmed/unapproved users (#19191) --- app/services/process_mentions_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index 8c63b611d..c9c158af1 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -38,7 +38,7 @@ class ProcessMentionsService < BaseService mentioned_account = Account.find_remote(username, domain) # Unapproved and unconfirmed accounts should not be mentionable - next if mentioned_account&.local? && !(mentioned_account.user_confirmed? && mentioned_account.user_approved?) + next match if mentioned_account&.local? && !(mentioned_account.user_confirmed? && mentioned_account.user_approved?) # If the account cannot be found or isn't the right protocol, # first try to resolve it From 882e54c78678bd4247d70fe5b04571543769bcee Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Wed, 21 Sep 2022 06:50:19 +0900 Subject: [PATCH 165/280] Fix Ambiguous SQL error on tootctl media refresh (#19206) --- 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 4904cc5eb..bba4a1bd7 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -234,7 +234,7 @@ module Mastodon end if options[:days].present? - scope = scope.where('id > ?', Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false)) + scope = scope.where('media_attachments.id > ?', Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false)) end processed, aggregate = parallelize_with_progress(scope) do |media_attachment| From 50948b46aabc0756d85bc6641f0bd3bcc09bf7d4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 20 Sep 2022 23:51:21 +0200 Subject: [PATCH 166/280] Add ability to filter followed accounts' posts by language (#19095) --- app/controllers/api/v1/accounts_controller.rb | 6 +- .../features/account/components/header.js | 5 + .../account_timeline/components/header.js | 6 + .../containers/header_container.js | 8 +- .../subscribed_languages_modal/index.js | 121 ++++++++++++++++++ .../features/ui/components/modal_root.js | 2 + .../mastodon/locales/defaultMessages.json | 25 ++++ app/javascript/mastodon/locales/en.json | 4 + app/lib/feed_manager.rb | 2 + app/models/concerns/account_interactions.rb | 23 ++-- app/models/export.rb | 4 +- app/models/follow.rb | 4 +- app/models/follow_request.rb | 4 +- .../rest/relationship_serializer.rb | 7 +- app/services/follow_service.rb | 13 +- app/services/import_service.rb | 2 +- app/validators/language_validator.rb | 21 +++ app/workers/refollow_worker.rb | 7 +- app/workers/unfollow_follow_worker.rb | 9 +- ...20220829192633_add_languages_to_follows.rb | 5 + ...192658_add_languages_to_follow_requests.rb | 5 + db/schema.rb | 4 +- .../api/v1/accounts_controller_spec.rb | 11 ++ .../following_accounts_controller_spec.rb | 2 +- spec/lib/feed_manager_spec.rb | 12 ++ .../concerns/account_interactions_spec.rb | 2 +- spec/models/export_spec.rb | 4 +- spec/models/follow_request_spec.rb | 2 +- spec/services/follow_service_spec.rb | 13 ++ spec/workers/refollow_worker_spec.rb | 4 +- 30 files changed, 298 insertions(+), 39 deletions(-) create mode 100644 app/javascript/mastodon/features/subscribed_languages_modal/index.js create mode 100644 app/validators/language_validator.rb create mode 100644 db/migrate/20220829192633_add_languages_to_follows.rb create mode 100644 db/migrate/20220829192658_add_languages_to_follow_requests.rb diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 5537cc9b0..be84720aa 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -30,12 +30,12 @@ class Api::V1::AccountsController < Api::BaseController self.response_body = Oj.dump(response.body) self.status = response.status rescue ActiveRecord::RecordInvalid => e - render json: ValidationErrorFormatter.new(e, :'account.username' => :username, :'invite_request.text' => :reason).as_json, status: :unprocessable_entity + render json: ValidationErrorFormatter.new(e, 'account.username': :username, 'invite_request.text': :reason).as_json, status: :unprocessable_entity end def follow - follow = FollowService.new.call(current_user.account, @account, reblogs: params.key?(:reblogs) ? truthy_param?(:reblogs) : nil, notify: params.key?(:notify) ? truthy_param?(:notify) : nil, with_rate_limit: true) - options = @account.locked? || current_user.account.silenced? ? {} : { following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify? } }, requested_map: { @account.id => false } } + follow = FollowService.new.call(current_user.account, @account, reblogs: params.key?(:reblogs) ? truthy_param?(:reblogs) : nil, notify: params.key?(:notify) ? truthy_param?(:notify) : nil, languages: params.key?(:languages) ? params[:languages] : nil, with_rate_limit: true) + options = @account.locked? || current_user.account.silenced? ? {} : { following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify?, languages: follow.languages } }, requested_map: { @account.id => false } } render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(**options) end diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 1ad9341c7..8f2753c35 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -51,6 +51,7 @@ const messages = defineMessages({ unendorse: { id: 'account.unendorse', defaultMessage: 'Don\'t feature on profile' }, add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' }, admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, + languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' }, }); const dateFormatOptions = { @@ -85,6 +86,7 @@ class Header extends ImmutablePureComponent { onEndorseToggle: PropTypes.func.isRequired, onAddToList: PropTypes.func.isRequired, onEditAccountNote: PropTypes.func.isRequired, + onChangeLanguages: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -212,6 +214,9 @@ class Header extends ImmutablePureComponent { } else { menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle }); } + + menu.push({ text: intl.formatMessage(messages.languages), action: this.props.onChangeLanguages }); + menu.push(null); } menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle }); diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index fab0bc597..f9838442f 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -22,6 +22,7 @@ export default class Header extends ImmutablePureComponent { onUnblockDomain: PropTypes.func.isRequired, onEndorseToggle: PropTypes.func.isRequired, onAddToList: PropTypes.func.isRequired, + onChangeLanguages: PropTypes.func.isRequired, hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -91,6 +92,10 @@ export default class Header extends ImmutablePureComponent { this.props.onEditAccountNote(this.props.account); } + handleChangeLanguages = () => { + this.props.onChangeLanguages(this.props.account); + } + render () { const { account, hidden, hideTabs } = this.props; @@ -117,6 +122,7 @@ export default class Header extends ImmutablePureComponent { onEndorseToggle={this.handleEndorseToggle} onAddToList={this.handleAddToList} onEditAccountNote={this.handleEditAccountNote} + onChangeLanguages={this.handleChangeLanguages} domain={this.props.domain} hidden={hidden} /> diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js index 371794dd7..3d6eb487d 100644 --- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js +++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js @@ -121,12 +121,18 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(unblockDomain(domain)); }, - onAddToList(account){ + onAddToList (account) { dispatch(openModal('LIST_ADDER', { accountId: account.get('id'), })); }, + onChangeLanguages (account) { + dispatch(openModal('SUBSCRIBED_LANGUAGES', { + accountId: account.get('id'), + })); + }, + }); export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header)); diff --git a/app/javascript/mastodon/features/subscribed_languages_modal/index.js b/app/javascript/mastodon/features/subscribed_languages_modal/index.js new file mode 100644 index 000000000..6a1bb2c47 --- /dev/null +++ b/app/javascript/mastodon/features/subscribed_languages_modal/index.js @@ -0,0 +1,121 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import { createSelector } from 'reselect'; +import { is, List as ImmutableList, Set as ImmutableSet } from 'immutable'; +import { languages as preloadedLanguages } from 'mastodon/initial_state'; +import Option from 'mastodon/features/report/components/option'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; +import IconButton from 'mastodon/components/icon_button'; +import Button from 'mastodon/components/button'; +import { followAccount } from 'mastodon/actions/accounts'; + +const messages = defineMessages({ + close: { id: 'lightbox.close', defaultMessage: 'Close' }, +}); + +const getAccountLanguages = createSelector([ + (state, accountId) => state.getIn(['timelines', `account:${accountId}`, 'items'], ImmutableList()), + state => state.get('statuses'), +], (statusIds, statuses) => + new ImmutableSet(statusIds.map(statusId => statuses.get(statusId)).filter(status => !status.get('reblog')).map(status => status.get('language')))); + +const mapStateToProps = (state, { accountId }) => ({ + acct: state.getIn(['accounts', accountId, 'acct']), + availableLanguages: getAccountLanguages(state, accountId), + selectedLanguages: ImmutableSet(state.getIn(['relationships', accountId, 'languages']) || ImmutableList()), +}); + +const mapDispatchToProps = (dispatch, { accountId }) => ({ + + onSubmit (languages) { + dispatch(followAccount(accountId, { languages })); + }, + +}); + +export default @connect(mapStateToProps, mapDispatchToProps) +@injectIntl +class SubscribedLanguagesModal extends ImmutablePureComponent { + + static propTypes = { + accountId: PropTypes.string.isRequired, + acct: PropTypes.string.isRequired, + availableLanguages: ImmutablePropTypes.setOf(PropTypes.string), + selectedLanguages: ImmutablePropTypes.setOf(PropTypes.string), + onClose: PropTypes.func.isRequired, + languages: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)), + intl: PropTypes.object.isRequired, + submit: PropTypes.func.isRequired, + }; + + static defaultProps = { + languages: preloadedLanguages, + }; + + state = { + selectedLanguages: this.props.selectedLanguages, + }; + + handleLanguageToggle = (value, checked) => { + const { selectedLanguages } = this.state; + + if (checked) { + this.setState({ selectedLanguages: selectedLanguages.add(value) }); + } else { + this.setState({ selectedLanguages: selectedLanguages.delete(value) }); + } + }; + + handleSubmit = () => { + this.props.onSubmit(this.state.selectedLanguages.toArray()); + this.props.onClose(); + } + + renderItem (value) { + const language = this.props.languages.find(language => language[0] === value); + const checked = this.state.selectedLanguages.includes(value); + + return ( +
+
+ + {acct} }} /> +
+ +
+

+ +
+ {availableLanguages.union(selectedLanguages).map(value => this.renderItem(value))} +
+ +
+ +
+ +
+
+
+ ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index b2c30e079..dfa89f2ce 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -11,6 +11,7 @@ import VideoModal from './video_modal'; import BoostModal from './boost_modal'; import AudioModal from './audio_modal'; import ConfirmationModal from './confirmation_modal'; +import SubscribedLanguagesModal from 'mastodon/features/subscribed_languages_modal'; import FocalPointModal from './focal_point_modal'; import { MuteModal, @@ -39,6 +40,7 @@ const MODAL_COMPONENTS = { 'LIST_ADDER': ListAdder, 'COMPARE_HISTORY': CompareHistoryModal, 'FILTER': FilterModal, + 'SUBSCRIBED_LANGUAGES': () => Promise.resolve({ default: SubscribedLanguagesModal }), }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 13ef56922..4c208c3cb 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1030,6 +1030,10 @@ "defaultMessage": "Open moderation interface for @{name}", "id": "status.admin_account" }, + { + "defaultMessage": "Change subscribed languages", + "id": "account.languages" + }, { "defaultMessage": "Follows you", "id": "account.follows_you" @@ -3350,6 +3354,27 @@ ], "path": "app/javascript/mastodon/features/status/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Close", + "id": "lightbox.close" + }, + { + "defaultMessage": "Change subscribed languages for {target}", + "id": "subscribed_languages.target" + }, + { + "defaultMessage": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "id": "subscribed_languages.lead" + }, + { + "defaultMessage": "Save changes", + "id": "subscribed_languages.save" + } + ], + "path": "app/javascript/mastodon/features/subscribed_languages_modal/index.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 521bc4455..4f515b321 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index ccff2667b..f2d204a64 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -354,6 +354,7 @@ class FeedManager def filter_from_home?(status, receiver_id, crutches) return false if receiver_id == status.account_id return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?) + return true if crutches[:languages][status.account_id].present? && status.language.present? && !crutches[:languages][status.account_id].include?(status.language) check_for_blocks = crutches[:active_mentions][status.id] || [] check_for_blocks.concat([status.account_id]) @@ -542,6 +543,7 @@ class FeedManager end crutches[:following] = Follow.where(account_id: receiver_id, target_account_id: statuses.map(&:in_reply_to_account_id).compact).pluck(:target_account_id).index_with(true) + crutches[:languages] = Follow.where(account_id: receiver_id, target_account_id: statuses.map(&:account_id)).pluck(:target_account_id, :languages).to_h crutches[:hiding_reblogs] = Follow.where(account_id: receiver_id, target_account_id: statuses.map { |s| s.account_id if s.reblog? }.compact, show_reblogs: false).pluck(:target_account_id).index_with(true) crutches[:blocking] = Block.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true) crutches[:muting] = Mute.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true) diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb index 9b358d338..15c49f2fe 100644 --- a/app/models/concerns/account_interactions.rb +++ b/app/models/concerns/account_interactions.rb @@ -9,6 +9,7 @@ module AccountInteractions mapping[follow.target_account_id] = { reblogs: follow.show_reblogs?, notify: follow.notify?, + languages: follow.languages, } end end @@ -38,6 +39,7 @@ module AccountInteractions mapping[follow_request.target_account_id] = { reblogs: follow_request.show_reblogs?, notify: follow_request.notify?, + languages: follow_request.languages, } end end @@ -100,12 +102,13 @@ module AccountInteractions has_many :announcement_mutes, dependent: :destroy end - def follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false, bypass_limit: false) - rel = active_relationships.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit) + def follow!(other_account, reblogs: nil, notify: nil, languages: nil, uri: nil, rate_limit: false, bypass_limit: false) + rel = active_relationships.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, languages: languages, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit) .find_or_create_by!(target_account: other_account) - rel.show_reblogs = reblogs unless reblogs.nil? - rel.notify = notify unless notify.nil? + rel.show_reblogs = reblogs unless reblogs.nil? + rel.notify = notify unless notify.nil? + rel.languages = languages unless languages.nil? rel.save! if rel.changed? @@ -114,12 +117,13 @@ module AccountInteractions rel end - def request_follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false, bypass_limit: false) - rel = follow_requests.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit) + def request_follow!(other_account, reblogs: nil, notify: nil, languages: nil, uri: nil, rate_limit: false, bypass_limit: false) + rel = follow_requests.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, languages: languages, rate_limit: rate_limit, bypass_follow_limit: bypass_limit) .find_or_create_by!(target_account: other_account) - rel.show_reblogs = reblogs unless reblogs.nil? - rel.notify = notify unless notify.nil? + rel.show_reblogs = reblogs unless reblogs.nil? + rel.notify = notify unless notify.nil? + rel.languages = languages unless languages.nil? rel.save! if rel.changed? @@ -288,8 +292,7 @@ module AccountInteractions private - def remove_potential_friendship(other_account, mutual = false) + def remove_potential_friendship(other_account) PotentialFriendshipTracker.remove(id, other_account.id) - PotentialFriendshipTracker.remove(other_account.id, id) if mutual end end diff --git a/app/models/export.rb b/app/models/export.rb index 5216eed5e..2457dcc15 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -30,9 +30,9 @@ class Export end def to_following_accounts_csv - CSV.generate(headers: ['Account address', 'Show boosts'], write_headers: true) do |csv| + CSV.generate(headers: ['Account address', 'Show boosts', 'Notify on new posts', 'Languages'], write_headers: true) do |csv| account.active_relationships.includes(:target_account).reorder(id: :desc).each do |follow| - csv << [acct(follow.target_account), follow.show_reblogs] + csv << [acct(follow.target_account), follow.show_reblogs, follow.notify, follow.languages&.join(', ')] end end end diff --git a/app/models/follow.rb b/app/models/follow.rb index a5e3fe809..e5cecbbc1 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -11,6 +11,7 @@ # show_reblogs :boolean default(TRUE), not null # uri :string # notify :boolean default(FALSE), not null +# languages :string is an Array # class Follow < ApplicationRecord @@ -27,6 +28,7 @@ class Follow < ApplicationRecord has_one :notification, as: :activity, dependent: :destroy validates :account_id, uniqueness: { scope: :target_account_id } + validates :languages, language: true scope :recent, -> { reorder(id: :desc) } @@ -35,7 +37,7 @@ class Follow < ApplicationRecord end def revoke_request! - FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, notify: notify, uri: uri) + FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, notify: notify, languages: languages, uri: uri) destroy! end diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb index 0b6f7629a..9034250c0 100644 --- a/app/models/follow_request.rb +++ b/app/models/follow_request.rb @@ -11,6 +11,7 @@ # show_reblogs :boolean default(TRUE), not null # uri :string # notify :boolean default(FALSE), not null +# languages :string is an Array # class FollowRequest < ApplicationRecord @@ -27,9 +28,10 @@ class FollowRequest < ApplicationRecord has_one :notification, as: :activity, dependent: :destroy validates :account_id, uniqueness: { scope: :target_account_id } + validates :languages, language: true def authorize! - account.follow!(target_account, reblogs: show_reblogs, notify: notify, uri: uri, bypass_limit: true) + account.follow!(target_account, reblogs: show_reblogs, notify: notify, languages: languages, uri: uri, bypass_limit: true) MergeWorker.perform_async(target_account.id, account.id) if account.local? destroy! end diff --git a/app/serializers/rest/relationship_serializer.rb b/app/serializers/rest/relationship_serializer.rb index afd4cddf9..31fc60eb2 100644 --- a/app/serializers/rest/relationship_serializer.rb +++ b/app/serializers/rest/relationship_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::RelationshipSerializer < ActiveModel::Serializer - attributes :id, :following, :showing_reblogs, :notifying, :followed_by, + attributes :id, :following, :showing_reblogs, :notifying, :languages, :followed_by, :blocking, :blocked_by, :muting, :muting_notifications, :requested, :domain_blocking, :endorsed, :note @@ -25,6 +25,11 @@ class REST::RelationshipSerializer < ActiveModel::Serializer false end + def languages + (instance_options[:relationships].following[object.id] || {})[:languages] || + (instance_options[:relationships].requested[object.id] || {})[:languages] + end + def followed_by instance_options[:relationships].followed_by[object.id] || false end diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index ed28e1371..feea40e3c 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -11,6 +11,7 @@ class FollowService < BaseService # @param [Hash] options # @option [Boolean] :reblogs Whether or not to show reblogs, defaults to true # @option [Boolean] :notify Whether to create notifications about new posts, defaults to false + # @option [Array] :languages Which languages to allow on the home feed from this account, defaults to all # @option [Boolean] :bypass_locked # @option [Boolean] :bypass_limit Allow following past the total follow number # @option [Boolean] :with_rate_limit @@ -57,15 +58,15 @@ class FollowService < BaseService end def change_follow_options! - @source_account.follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify]) + @source_account.follow!(@target_account, **follow_options) end def change_follow_request_options! - @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify]) + @source_account.request_follow!(@target_account, **follow_options) end def request_follow! - follow_request = @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit]) + follow_request = @source_account.request_follow!(@target_account, **follow_options.merge(rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])) if @target_account.local? LocalNotificationWorker.perform_async(@target_account.id, follow_request.id, follow_request.class.name, 'follow_request') @@ -77,7 +78,7 @@ class FollowService < BaseService end def direct_follow! - follow = @source_account.follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit]) + follow = @source_account.follow!(@target_account, **follow_options.merge(rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])) LocalNotificationWorker.perform_async(@target_account.id, follow.id, follow.class.name, 'follow') MergeWorker.perform_async(@target_account.id, @source_account.id) @@ -88,4 +89,8 @@ class FollowService < BaseService def build_json(follow_request) Oj.dump(serialize_payload(follow_request, ActivityPub::FollowSerializer)) end + + def follow_options + @options.slice(:reblogs, :notify, :languages) + end end diff --git a/app/services/import_service.rb b/app/services/import_service.rb index 8e6640b9d..676c37bde 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -27,7 +27,7 @@ class ImportService < BaseService def import_follows! parse_import_data!(['Account address']) - import_relationships!('follow', 'unfollow', @account.following, ROWS_PROCESSING_LIMIT, reblogs: { header: 'Show boosts', default: true }) + import_relationships!('follow', 'unfollow', @account.following, ROWS_PROCESSING_LIMIT, reblogs: { header: 'Show boosts', default: true }, notify: { header: 'Notify on new posts', default: false }, languages: { header: 'Languages', default: nil }) end def import_blocks! diff --git a/app/validators/language_validator.rb b/app/validators/language_validator.rb new file mode 100644 index 000000000..b723e1a40 --- /dev/null +++ b/app/validators/language_validator.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class LanguageValidator < ActiveModel::EachValidator + include LanguagesHelper + + def validate_each(record, attribute, value) + record.errors.add(attribute, :invalid) unless valid?(value) + end + + private + + def valid?(str) + if str.nil? + true + elsif str.is_a?(Array) + str.all? { |x| valid_locale?(x) } + else + valid_locale?(str) + end + end +end diff --git a/app/workers/refollow_worker.rb b/app/workers/refollow_worker.rb index 319b00109..4b712d3aa 100644 --- a/app/workers/refollow_worker.rb +++ b/app/workers/refollow_worker.rb @@ -10,8 +10,9 @@ class RefollowWorker return unless target_account.activitypub? target_account.passive_relationships.where(account: Account.where(domain: nil)).includes(:account).reorder(nil).find_each do |follow| - reblogs = follow.show_reblogs? - notify = follow.notify? + reblogs = follow.show_reblogs? + notify = follow.notify? + languages = follow.languages # Locally unfollow remote account follower = follow.account @@ -19,7 +20,7 @@ class RefollowWorker # Schedule re-follow begin - FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, bypass_limit: true) + FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_limit: true) rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, HTTP::Error, OpenSSL::SSL::SSLError next end diff --git a/app/workers/unfollow_follow_worker.rb b/app/workers/unfollow_follow_worker.rb index 0bd5ff472..7203b4888 100644 --- a/app/workers/unfollow_follow_worker.rb +++ b/app/workers/unfollow_follow_worker.rb @@ -10,11 +10,12 @@ class UnfollowFollowWorker old_target_account = Account.find(old_target_account_id) new_target_account = Account.find(new_target_account_id) - follow = follower_account.active_relationships.find_by(target_account: old_target_account) - reblogs = follow&.show_reblogs? - notify = follow&.notify? + follow = follower_account.active_relationships.find_by(target_account: old_target_account) + reblogs = follow&.show_reblogs? + notify = follow&.notify? + languages = follow&.languages - FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, bypass_locked: bypass_locked, bypass_limit: true) + FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_locked: bypass_locked, bypass_limit: true) UnfollowService.new.call(follower_account, old_target_account, skip_unmerge: true) rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError true diff --git a/db/migrate/20220829192633_add_languages_to_follows.rb b/db/migrate/20220829192633_add_languages_to_follows.rb new file mode 100644 index 000000000..f6cf48880 --- /dev/null +++ b/db/migrate/20220829192633_add_languages_to_follows.rb @@ -0,0 +1,5 @@ +class AddLanguagesToFollows < ActiveRecord::Migration[6.1] + def change + add_column :follows, :languages, :string, array: true + end +end diff --git a/db/migrate/20220829192658_add_languages_to_follow_requests.rb b/db/migrate/20220829192658_add_languages_to_follow_requests.rb new file mode 100644 index 000000000..f98fabb22 --- /dev/null +++ b/db/migrate/20220829192658_add_languages_to_follow_requests.rb @@ -0,0 +1,5 @@ +class AddLanguagesToFollowRequests < ActiveRecord::Migration[6.1] + def change + add_column :follow_requests, :languages, :string, array: true + end +end diff --git a/db/schema.rb b/db/schema.rb index db22f538a..1a98b22db 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: 2022_08_27_195229) do +ActiveRecord::Schema.define(version: 2022_08_29_192658) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -461,6 +461,7 @@ ActiveRecord::Schema.define(version: 2022_08_27_195229) do t.boolean "show_reblogs", default: true, null: false t.string "uri" t.boolean "notify", default: false, null: false + t.string "languages", array: true t.index ["account_id", "target_account_id"], name: "index_follow_requests_on_account_id_and_target_account_id", unique: true end @@ -472,6 +473,7 @@ ActiveRecord::Schema.define(version: 2022_08_27_195229) do t.boolean "show_reblogs", default: true, null: false t.string "uri" t.boolean "notify", default: false, null: false + t.string "languages", array: true t.index ["account_id", "target_account_id"], name: "index_follows_on_account_id_and_target_account_id", unique: true t.index ["target_account_id"], name: "index_follows_on_target_account_id" end diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb index 5d5c245c5..d6bbcefd7 100644 --- a/spec/controllers/api/v1/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts_controller_spec.rb @@ -145,6 +145,17 @@ RSpec.describe Api::V1::AccountsController, type: :controller do expect(json[:showing_reblogs]).to be false expect(json[:notifying]).to be true end + + it 'changes languages option' do + post :follow, params: { id: other_account.id, languages: %w(en es) } + + json = body_as_json + + expect(json[:following]).to be true + expect(json[:showing_reblogs]).to be false + expect(json[:notifying]).to be false + expect(json[:languages]).to match_array %w(en es) + end end end diff --git a/spec/controllers/settings/exports/following_accounts_controller_spec.rb b/spec/controllers/settings/exports/following_accounts_controller_spec.rb index 78858e772..bfe010555 100644 --- a/spec/controllers/settings/exports/following_accounts_controller_spec.rb +++ b/spec/controllers/settings/exports/following_accounts_controller_spec.rb @@ -11,7 +11,7 @@ describe Settings::Exports::FollowingAccountsController do sign_in user, scope: :user get :index, format: :csv - expect(response.body).to eq "Account address,Show boosts\nusername@domain,true\n" + expect(response.body).to eq "Account address,Show boosts,Notify on new posts,Languages\nusername@domain,true,false,\n" end end end diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb index 48c57b86e..0f3b05e5a 100644 --- a/spec/lib/feed_manager_spec.rb +++ b/spec/lib/feed_manager_spec.rb @@ -127,6 +127,18 @@ RSpec.describe FeedManager do reblog = Fabricate(:status, reblog: status, account: jeff) expect(FeedManager.instance.filter?(:home, reblog, alice)).to be true end + + it 'returns true for German post when follow is set to English only' do + alice.follow!(bob, languages: %w(en)) + status = Fabricate(:status, text: 'Hallo Welt', account: bob, language: 'de') + expect(FeedManager.instance.filter?(:home, status, alice)).to be true + end + + it 'returns false for German post when follow is set to German' do + alice.follow!(bob, languages: %w(de)) + status = Fabricate(:status, text: 'Hallo Welt', account: bob, language: 'de') + expect(FeedManager.instance.filter?(:home, status, alice)).to be false + end end context 'for mentions feed' do diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb index 0369aff10..1d1898ab0 100644 --- a/spec/models/concerns/account_interactions_spec.rb +++ b/spec/models/concerns/account_interactions_spec.rb @@ -14,7 +14,7 @@ describe AccountInteractions do context 'account with Follow' do it 'returns { target_account_id => true }' do Fabricate(:follow, account: account, target_account: target_account) - is_expected.to eq(target_account_id => { reblogs: true, notify: false }) + is_expected.to eq(target_account_id => { reblogs: true, notify: false, languages: nil }) end end diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb index 4e6b824bb..135d7a36b 100644 --- a/spec/models/export_spec.rb +++ b/spec/models/export_spec.rb @@ -35,8 +35,8 @@ describe Export do results = export.strip.split("\n") expect(results.size).to eq 3 - expect(results.first).to eq 'Account address,Show boosts' - expect(results.second).to eq 'one@local.host,true' + expect(results.first).to eq 'Account address,Show boosts,Notify on new posts,Languages' + expect(results.second).to eq 'one@local.host,true,false,' end end diff --git a/spec/models/follow_request_spec.rb b/spec/models/follow_request_spec.rb index 36ce8ee60..901eabc9d 100644 --- a/spec/models/follow_request_spec.rb +++ b/spec/models/follow_request_spec.rb @@ -7,7 +7,7 @@ RSpec.describe FollowRequest, type: :model do let(:target_account) { Fabricate(:account) } it 'calls Account#follow!, MergeWorker.perform_async, and #destroy!' do - expect(account).to receive(:follow!).with(target_account, reblogs: true, notify: false, uri: follow_request.uri, bypass_limit: true) + expect(account).to receive(:follow!).with(target_account, reblogs: true, notify: false, uri: follow_request.uri, languages: nil, bypass_limit: true) expect(MergeWorker).to receive(:perform_async).with(target_account.id, account.id) expect(follow_request).to receive(:destroy!) follow_request.authorize! diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb index 02bc87c58..88346ec54 100644 --- a/spec/services/follow_service_spec.rb +++ b/spec/services/follow_service_spec.rb @@ -121,6 +121,19 @@ RSpec.describe FollowService, type: :service do expect(sender.muting_reblogs?(bob)).to be false end end + + describe 'already followed account, changing languages' do + let(:bob) { Fabricate(:account, username: 'bob') } + + before do + sender.follow!(bob) + subject.call(sender, bob, languages: %w(en es)) + end + + it 'changes languages' do + expect(Follow.find_by(account: sender, target_account: bob)&.languages).to match_array %w(en es) + end + end end context 'remote ActivityPub account' do diff --git a/spec/workers/refollow_worker_spec.rb b/spec/workers/refollow_worker_spec.rb index df6731b64..d9c2293b6 100644 --- a/spec/workers/refollow_worker_spec.rb +++ b/spec/workers/refollow_worker_spec.rb @@ -23,8 +23,8 @@ describe RefollowWorker do result = subject.perform(account.id) expect(result).to be_nil - expect(service).to have_received(:call).with(alice, account, reblogs: true, notify: false, bypass_limit: true) - expect(service).to have_received(:call).with(bob, account, reblogs: false, notify: false, bypass_limit: true) + expect(service).to have_received(:call).with(alice, account, reblogs: true, notify: false, languages: nil, bypass_limit: true) + expect(service).to have_received(:call).with(bob, account, reblogs: false, notify: false, languages: nil, bypass_limit: true) end end end From 8e25e6c3a8d91bd536a7442bdf93bb1dbf7025a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 10:50:49 +0900 Subject: [PATCH 167/280] Bump @babel/core from 7.19.0 to 7.19.1 (#19199) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.19.0 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 108 ++++++++++++++++++++++++++++----------------------- 2 files changed, 61 insertions(+), 49 deletions(-) diff --git a/package.json b/package.json index b57108c04..caea3454a 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.19.0", + "@babel/core": "^7.19.1", "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index 04837a50c..76a99d065 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,20 +42,25 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.0", "@babel/core@^7.7.2": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.0.tgz#d2f5f4f2033c00de8096be3c9f45772563e150c3" - integrity sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ== +"@babel/compat-data@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" + integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== + +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.1", "@babel/core@^7.7.2": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" + integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-compilation-targets" "^7.19.1" "@babel/helper-module-transforms" "^7.19.0" "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.0" + "@babel/parser" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" + "@babel/traverse" "^7.19.1" "@babel/types" "^7.19.0" convert-source-map "^1.7.0" debug "^4.1.0" @@ -104,14 +109,14 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz#537ec8339d53e806ed422f1e06c8f17d55b96bb0" - integrity sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" + integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== dependencies: - "@babel/compat-data" "^7.19.0" + "@babel/compat-data" "^7.19.1" "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" + browserslist "^4.21.3" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": @@ -369,10 +374,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" - integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" + integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -1118,10 +1123,10 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.7.2": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed" - integrity sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA== +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.7.2": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" + integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== dependencies: "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.19.0" @@ -1129,7 +1134,7 @@ "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.0" + "@babel/parser" "^7.19.1" "@babel/types" "^7.19.0" debug "^4.1.0" globals "^11.1.0" @@ -3018,17 +3023,6 @@ browserslist@^4.0.0, browserslist@^4.12.0: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.20.2: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== - dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" - escalade "^3.1.1" - node-releases "^2.0.3" - picocolors "^1.0.0" - browserslist@^4.21.0: version "4.21.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" @@ -3039,6 +3033,16 @@ browserslist@^4.21.0: node-releases "^2.0.5" update-browserslist-db "^1.0.0" +browserslist@^4.21.3: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3227,16 +3231,16 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8" integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== -caniuse-lite@^1.0.30001332: - version "1.0.30001335" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" - integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== - caniuse-lite@^1.0.30001358: version "1.0.30001359" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== +caniuse-lite@^1.0.30001400: + version "1.0.30001406" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001406.tgz#d0146e7919635479f873b4507517b627f66ab269" + integrity sha512-bWTlaXUy/rq0BBtYShc/jArYfBPjEV95euvZ8JVtO43oQExEN/WquoqpufFjNu4kSpi5cy5kMbNvzztWDfv1Jg== + chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4360,16 +4364,16 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052" integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig== -electron-to-chromium@^1.4.118: - version "1.4.129" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238" - integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ== - electron-to-chromium@^1.4.164: version "1.4.170" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== +electron-to-chromium@^1.4.251: + version "1.4.254" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz#c6203583890abf88dfc0be046cd72d3b48f8beb6" + integrity sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q== + elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -7852,16 +7856,16 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== -node-releases@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" - integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== - node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -11347,6 +11351,14 @@ update-browserslist-db@^1.0.0: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" + integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.0" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" From 665582d93e5b7b828c79c58e99e27d72155c99bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 10:51:20 +0900 Subject: [PATCH 168/280] Bump @babel/eslint-parser from 7.18.9 to 7.19.1 (#19193) Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.18.9 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/eslint/babel-eslint-parser) --- updated-dependencies: - dependency-name: "@babel/eslint-parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 33 ++++++++++++++++++++------------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index caea3454a..058c24615 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "ws": "^8.8.1" }, "devDependencies": { - "@babel/eslint-parser": "^7.18.9", + "@babel/eslint-parser": "^7.19.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", "babel-jest": "^29.0.3", diff --git a/yarn.lock b/yarn.lock index 76a99d065..c10e3ae51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -68,12 +68,12 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/eslint-parser@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz#255a63796819a97b7578751bb08ab9f2a375a031" - integrity sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ== +"@babel/eslint-parser@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== dependencies: - eslint-scope "^5.1.1" + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.0" @@ -1583,6 +1583,13 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@node-redis/bloom@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" @@ -4696,6 +4703,14 @@ eslint-plugin-react@~7.31.8: semver "^6.3.0" string.prototype.matchall "^4.0.7" +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -4704,14 +4719,6 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" From 0f24ef4673eee301de6049704b4c42e751553b57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:05:25 +0900 Subject: [PATCH 169/280] Bump @babel/plugin-transform-runtime from 7.18.10 to 7.19.1 (#19203) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.18.10 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 76 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 058c24615..b215c860d 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.19.1", "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", - "@babel/plugin-transform-runtime": "^7.18.10", + "@babel/plugin-transform-runtime": "^7.19.1", "@babel/preset-env": "^7.19.0", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.0", diff --git a/yarn.lock b/yarn.lock index c10e3ae51..f417354f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -160,6 +160,18 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-environment-visitor@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" @@ -215,14 +227,7 @@ dependencies: "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== @@ -925,16 +930,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz#37d14d1fa810a368fd635d4d1476c0154144a96f" - integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== +"@babel/plugin-transform-runtime@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz#a3df2d7312eea624c7889a2dcd37fd1dfd25b2c6" + integrity sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" + "@babel/helper-plugin-utils" "^7.19.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.18.6": @@ -1139,7 +1144,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== @@ -2710,13 +2715,13 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== +babel-plugin-polyfill-corejs2@^0.3.2, babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.5.3: @@ -2727,12 +2732,20 @@ babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" - integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-regenerator@^0.4.0, babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" babel-plugin-preval@^5.1.0: version "5.1.0" @@ -3040,7 +3053,7 @@ browserslist@^4.21.0: node-releases "^2.0.5" update-browserslist-db "^1.0.0" -browserslist@^4.21.3: +browserslist@^4.21.3, browserslist@^4.21.4: version "4.21.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -3654,6 +3667,13 @@ core-js-compat@^3.21.0, core-js-compat@^3.22.1: browserslist "^4.21.0" semver "7.0.0" +core-js-compat@^3.25.1: + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" + integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ== + dependencies: + browserslist "^4.21.4" + core-js-pure@^3.0.0: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" From 195087bee0aaf52e8c0ddf89dfa8269cf5057a74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:05:44 +0900 Subject: [PATCH 170/280] Bump @babel/plugin-proposal-decorators from 7.19.0 to 7.19.1 (#19196) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.19.0 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index b215c860d..5a603d723 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.19.1", - "@babel/plugin-proposal-decorators": "^7.19.0", + "@babel/plugin-proposal-decorators": "^7.19.1", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.1", "@babel/preset-env": "^7.19.0", diff --git a/yarn.lock b/yarn.lock index f417354f4..e16166482 100644 --- a/yarn.lock +++ b/yarn.lock @@ -280,16 +280,16 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9", "@babel/helper-replace-supers@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" + integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/traverse" "^7.19.1" + "@babel/types" "^7.19.0" "@babel/helper-simple-access@^7.18.6": version "7.18.6" @@ -427,14 +427,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.0.tgz#5a3bc0699ee34117c73c960a5396ffce104c4eaa" - integrity sha512-Bo5nOSjiJccjv00+BrDkmfeBLBi2B0qe8ygj24KdL8VdwtZz+710NCwehF+x/Ng+0mkHx5za2eAofmvVFLF4Fg== +"@babel/plugin-proposal-decorators@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.1.tgz#4bab3e7afe894fdbf47ffa86701266104fcb6ecc" + integrity sha512-LfIKNBBY7Q1OX5C4xAgRQffOg2OnhAo9fnbcOHgOC9Yytm2Sw+4XqHufRYU86tHomzepxtvuVaNO+3EVKR4ivw== dependencies: "@babel/helper-create-class-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.19.0" @@ -1128,7 +1128,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.7.2": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== From 7191db0e434ba84edfa18de05b1133ac9e924ded Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 21 Sep 2022 04:10:02 +0200 Subject: [PATCH 171/280] New Crowdin updates (#19167) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations en.json (Czech) * New translations en.yml (Czech) * New translations en.json (Czech) * New translations en.yml (Spanish) * New translations en.yml (Turkish) * New translations en.json (Thai) * New translations en.json (Thai) * New translations en.json (Dutch) * New translations en.yml (Czech) * New translations simple_form.en.yml (Czech) * New translations activerecord.en.yml (Czech) * New translations en.json (Thai) * New translations en.yml (Czech) * New translations en.json (Albanian) * New translations en.yml (Albanian) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (Albanian) * New translations devise.en.yml (Albanian) * New translations doorkeeper.en.yml (Albanian) * New translations en.json (Thai) * New translations en.yml (Thai) * New translations en.yml (Ukrainian) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.yml (Thai) * New translations en.json (Bulgarian) * New translations en.json (Bulgarian) * New translations en.yml (Thai) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations en.json (Sinhala) * New translations en.json (Sinhala) * New translations en.json (Sinhala) * New translations en.json (Sinhala) * New translations en.json (Sinhala) * New translations en.yml (Greek) * New translations en.yml (Afrikaans) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.json (Catalan) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.json (Greek) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.yml (Finnish) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.json (Afrikaans) * New translations en.yml (French) * New translations en.json (Hebrew) * New translations en.json (French) * New translations en.yml (German) * New translations en.yml (Chinese Simplified) * New translations en.json (Tamil) * New translations en.json (Dutch) * New translations en.json (Romanian) * New translations en.yml (Romanian) * New translations en.json (Armenian) * New translations en.json (Ido) * New translations en.yml (Ido) * New translations en.yml (Armenian) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Serbian (Cyrillic)) * New translations en.yml (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.json (Persian) * New translations en.yml (Slovenian) * New translations en.yml (Slovak) * New translations en.yml (Dutch) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.json (Georgian) * New translations en.yml (Georgian) * New translations en.yml (Korean) * New translations en.json (Lithuanian) * New translations en.yml (Lithuanian) * New translations en.json (Macedonian) * New translations en.yml (Macedonian) * New translations simple_form.en.yml (Dutch) * New translations en.json (Slovak) * New translations en.json (Norwegian) * New translations en.yml (Norwegian) * New translations en.json (Punjabi) * New translations en.yml (Punjabi) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Russian) * New translations en.yml (Persian) * New translations en.yml (Tamil) * New translations en.json (Estonian) * New translations en.yml (English, United Kingdom) * New translations en.yml (Telugu) * New translations en.json (Telugu) * New translations en.yml (Malay) * New translations en.json (Malay) * New translations en.yml (Hindi) * New translations en.json (Hindi) * New translations en.yml (Latvian) * New translations en.yml (Estonian) * New translations en.json (English, United Kingdom) * New translations en.yml (Kazakh) * New translations en.yml (Bengali) * New translations en.json (Kazakh) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Spanish, Mexico) * New translations en.json (Marathi) * New translations en.yml (Marathi) * New translations en.json (Croatian) * New translations en.yml (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Breton) * New translations en.yml (Asturian) * New translations en.json (Asturian) * New translations en.yml (Scottish Gaelic) * New translations en.json (Scottish Gaelic) * New translations en.yml (Kannada) * New translations en.json (Kannada) * New translations en.yml (Cornish) * New translations en.json (Cornish) * New translations en.yml (Sinhala) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Breton) * New translations en.yml (Malayalam) * New translations en.json (Malayalam) * New translations en.yml (Tatar) * New translations en.json (Tatar) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Uyghur) * New translations en.json (Uyghur) * New translations en.yml (Esperanto) * New translations en.yml (Welsh) * New translations en.json (Welsh) * New translations en.json (Occitan) * New translations en.yml (Occitan) * New translations en.json (Sanskrit) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Silesian) * New translations en.json (Silesian) * New translations en.yml (Taigi) * New translations en.json (Taigi) * New translations en.yml (Kabyle) * New translations en.json (Kabyle) * New translations en.yml (Sanskrit) * New translations en.yml (Sardinian) * New translations en.json (Serbian (Latin)) * New translations en.json (Sardinian) * New translations en.yml (Corsican) * New translations en.json (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (Dutch) * New translations en.json (Danish) * New translations en.json (Korean) * New translations en.yml (Dutch) * New translations en.json (Spanish, Argentina) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 4 + app/javascript/mastodon/locales/ar.json | 4 + app/javascript/mastodon/locales/ast.json | 4 + app/javascript/mastodon/locales/bg.json | 116 ++++---- app/javascript/mastodon/locales/bn.json | 4 + app/javascript/mastodon/locales/br.json | 4 + app/javascript/mastodon/locales/ca.json | 4 + app/javascript/mastodon/locales/ckb.json | 4 + app/javascript/mastodon/locales/co.json | 4 + app/javascript/mastodon/locales/cs.json | 44 +-- app/javascript/mastodon/locales/cy.json | 4 + app/javascript/mastodon/locales/da.json | 4 + app/javascript/mastodon/locales/de.json | 4 + app/javascript/mastodon/locales/el.json | 4 + app/javascript/mastodon/locales/en-GB.json | 4 + app/javascript/mastodon/locales/eo.json | 20 +- app/javascript/mastodon/locales/es-AR.json | 4 + app/javascript/mastodon/locales/es-MX.json | 38 +-- app/javascript/mastodon/locales/es.json | 4 + app/javascript/mastodon/locales/et.json | 4 + app/javascript/mastodon/locales/eu.json | 4 + app/javascript/mastodon/locales/fa.json | 4 + app/javascript/mastodon/locales/fi.json | 4 + app/javascript/mastodon/locales/fr.json | 4 + app/javascript/mastodon/locales/fy.json | 4 + app/javascript/mastodon/locales/ga.json | 4 + app/javascript/mastodon/locales/gd.json | 4 + app/javascript/mastodon/locales/gl.json | 4 + app/javascript/mastodon/locales/he.json | 4 + app/javascript/mastodon/locales/hi.json | 4 + app/javascript/mastodon/locales/hr.json | 4 + app/javascript/mastodon/locales/hu.json | 4 + app/javascript/mastodon/locales/hy.json | 4 + app/javascript/mastodon/locales/id.json | 8 +- app/javascript/mastodon/locales/io.json | 4 + app/javascript/mastodon/locales/is.json | 4 + app/javascript/mastodon/locales/it.json | 4 + app/javascript/mastodon/locales/ja.json | 26 +- app/javascript/mastodon/locales/ka.json | 4 + app/javascript/mastodon/locales/kab.json | 4 + app/javascript/mastodon/locales/kk.json | 4 + app/javascript/mastodon/locales/kn.json | 4 + app/javascript/mastodon/locales/ko.json | 4 + app/javascript/mastodon/locales/ku.json | 4 + app/javascript/mastodon/locales/kw.json | 4 + app/javascript/mastodon/locales/lt.json | 4 + app/javascript/mastodon/locales/lv.json | 4 + app/javascript/mastodon/locales/mk.json | 4 + app/javascript/mastodon/locales/ml.json | 4 + app/javascript/mastodon/locales/mr.json | 4 + app/javascript/mastodon/locales/ms.json | 4 + app/javascript/mastodon/locales/nl.json | 34 ++- app/javascript/mastodon/locales/nn.json | 4 + app/javascript/mastodon/locales/no.json | 4 + app/javascript/mastodon/locales/oc.json | 4 + app/javascript/mastodon/locales/pa.json | 4 + app/javascript/mastodon/locales/pl.json | 4 + app/javascript/mastodon/locales/pt-BR.json | 4 + app/javascript/mastodon/locales/pt-PT.json | 4 + app/javascript/mastodon/locales/ro.json | 4 + app/javascript/mastodon/locales/ru.json | 4 + app/javascript/mastodon/locales/sa.json | 4 + app/javascript/mastodon/locales/sc.json | 4 + app/javascript/mastodon/locales/si.json | 290 ++++++++++--------- app/javascript/mastodon/locales/sk.json | 4 + app/javascript/mastodon/locales/sl.json | 4 + app/javascript/mastodon/locales/sq.json | 38 +-- app/javascript/mastodon/locales/sr-Latn.json | 4 + app/javascript/mastodon/locales/sr.json | 4 + app/javascript/mastodon/locales/sv.json | 4 + app/javascript/mastodon/locales/szl.json | 4 + app/javascript/mastodon/locales/ta.json | 4 + app/javascript/mastodon/locales/tai.json | 4 + app/javascript/mastodon/locales/te.json | 4 + app/javascript/mastodon/locales/th.json | 12 +- app/javascript/mastodon/locales/tr.json | 4 + app/javascript/mastodon/locales/tt.json | 4 + app/javascript/mastodon/locales/ug.json | 4 + app/javascript/mastodon/locales/uk.json | 4 + app/javascript/mastodon/locales/ur.json | 4 + app/javascript/mastodon/locales/vi.json | 4 + app/javascript/mastodon/locales/zgh.json | 4 + app/javascript/mastodon/locales/zh-CN.json | 4 + app/javascript/mastodon/locales/zh-HK.json | 4 + app/javascript/mastodon/locales/zh-TW.json | 4 + config/locales/activerecord.cs.yml | 2 + config/locales/cs.yml | 24 ++ config/locales/es-MX.yml | 11 +- config/locales/es.yml | 2 +- config/locales/nl.yml | 91 ++++++ config/locales/simple_form.cs.yml | 4 + config/locales/simple_form.nl.yml | 4 + config/locales/simple_form.sq.yml | 3 + config/locales/sq.yml | 46 +++ config/locales/th.yml | 21 ++ config/locales/tr.yml | 2 +- config/locales/uk.yml | 1 + 97 files changed, 841 insertions(+), 296 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 86d590654..384e6feb2 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -24,6 +24,7 @@ "account.follows_you": "Volg jou", "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", "account.joined": "{date} aangesluit", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}", "account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 220aa14ee..65ec25be9 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -24,6 +24,7 @@ "account.follows_you": "يُتابِعُك", "account.hide_reblogs": "إخفاء مشاركات @{name}", "account.joined": "انضم في {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", "account.media": "وسائط", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "إلغاء الاقتراح", "suggestions.header": "يمكن أن يهمك…", "tabs_bar.federated_timeline": "الموحَّد", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 50fc3f25c..547956317 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -24,6 +24,7 @@ "account.follows_you": "Síguete", "account.hide_reblogs": "Anubrir les comparticiones de @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Non disponible", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Desfixar del perfil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "Quiciabes t'interese…", "tabs_bar.federated_timeline": "Fediversu", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index ebe795039..4135ff3cf 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -24,6 +24,7 @@ "account.follows_you": "Твой последовател", "account.hide_reblogs": "Скриване на споделяния от @{name}", "account.joined": "Присъединил се на {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}", "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", "account.media": "Мултимедия", @@ -41,25 +42,25 @@ "account.statuses_counter": "{count, plural, one {{counter} Публикация} other {{counter} Публикации}}", "account.unblock": "Не блокирай", "account.unblock_domain": "Unhide {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Отблокирай", "account.unendorse": "Не включвайте в профила", "account.unfollow": "Не следвай", "account.unmute": "Раззаглушаване на @{name}", "account.unmute_notifications": "Раззаглушаване на известия от @{name}", "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Ниво на задържани на потребители след регистрация, в дни", + "admin.dashboard.monthly_retention": "Ниво на задържани на потребители след регистрация, в месеци", "admin.dashboard.retention.average": "Средно", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort": "Месец на регистрацията", "admin.dashboard.retention.cohort_size": "Нови потребители", "alert.rate_limited.message": "Моля, опитайте отново след {retry_time, time, medium}.", "alert.rate_limited.title": "Скоростта е ограничена", "alert.unexpected.message": "Възникна неочаквана грешка.", "alert.unexpected.title": "Опаа!", "announcement.announcement": "Оповестяване", - "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "attachments_list.unprocessed": "(необработен)", + "audio.hide": "Скриване на видеото", "autosuggest_hashtag.per_week": "{count} на седмица", "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път", "bundle_column_error.body": "Нещо се обърка при зареждането на този компонент.", @@ -93,10 +94,10 @@ "community.column_settings.local_only": "Само локално", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Само дистанционно", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Смяна на езика", + "compose.language.search": "Търсене на езици...", "compose_form.direct_message_warning_learn_more": "Още информация", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Поставете в Мастодон не са криптирани от край до край. Не споделяйте никаква чувствителна информация.", "compose_form.hashtag_warning": "Тази публикация няма да бъде изброена под нито един хаштаг, тъй като е скрита. Само публични публикации могат да се търсят по хаштаг.", "compose_form.lock_disclaimer": "Вашият акаунт не е {locked}. Всеки може да ви последва, за да прегледа вашите публикации само за последователи.", "compose_form.lock_disclaimer.lock": "заключено", @@ -107,9 +108,9 @@ "compose_form.poll.remove_option": "Премахване на този избор", "compose_form.poll.switch_to_multiple": "Промяна на анкетата, за да се позволят множество възможни избора", "compose_form.poll.switch_to_single": "Промяна на анкетата, за да се позволи един възможен избор", - "compose_form.publish": "Publish", + "compose_form.publish": "Публикувай", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Запази промените", "compose_form.sensitive.hide": "{count, plural, one {Маркиране на мултимедията като деликатна} other {Маркиране на мултимедиите като деликатни}}", "compose_form.sensitive.marked": "{count, plural, one {Мултимедията е маркирана като деликатна} other {Мултимедиите са маркирани като деликатни}}", "compose_form.sensitive.unmarked": "{count, plural, one {Мултимедията не е маркирана като деликатна} other {Мултимедиите не са маркирани като деликатни}}", @@ -179,7 +180,7 @@ "empty_column.follow_requests": "Все още нямате заявки за последване. Когато получите такава, тя ще се покаже тук.", "empty_column.hashtag": "В този хаштаг няма нищо все още.", "empty_column.home": "Вашата начална емисия е празна! Посетете {public} или използвайте търсене, за да започнете и да се запознаете с други потребители.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home.suggestions": "Виж някои предложения", "empty_column.list": "There is nothing in this list yet.", "empty_column.lists": "Все още нямате списъци. Когато създадете такъв, той ще се покаже тук.", "empty_column.mutes": "Не сте заглушавали потребители все още.", @@ -189,7 +190,7 @@ "error.unexpected_crash.explanation_addons": "Тази страница не може да се покаже правилно. Тази грешка вероятно е причинена от добавка на браузъра или инструменти за автоматичен превод.", "error.unexpected_crash.next_steps": "Опитайте да опресните страницата. Ако това не помогне, все още можете да използвате Mastodon чрез различен браузър или приложение.", "error.unexpected_crash.next_steps_addons": "Опитайте да ги деактивирате и да опресните страницата. Ако това не помогне, може все още да използвате Mastodon чрез различен браузър или приложение.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.copy_stacktrace": "Копиране на stacktrace-а в клипборда", "errors.unexpected_crash.report_issue": "Сигнал за проблем", "explore.search_results": "Резултати от търсенето", "explore.suggested_follows": "За вас", @@ -198,21 +199,21 @@ "explore.trending_statuses": "Публикации", "explore.trending_tags": "Тагове", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "Несъвпадение на контекста!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "Изтекал филтър!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "Настройки на филтър", + "filter_modal.added.settings_link": "страница с настройки", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.title": "Филтърът е добавен!", + "filter_modal.select_filter.context_mismatch": "не е приложимо за този контекст", + "filter_modal.select_filter.expired": "изтекло", + "filter_modal.select_filter.prompt_new": "Нова категория: {name}", + "filter_modal.select_filter.search": "Търси или създай", + "filter_modal.select_filter.subtitle": "Изберете съществуваща категория или създайте нова", + "filter_modal.select_filter.title": "Филтриране на поста", + "filter_modal.title.status": "Филтрирай пост", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.", "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!", @@ -237,9 +238,9 @@ "hashtag.column_settings.tag_mode.any": "Някое от тези", "hashtag.column_settings.tag_mode.none": "Никое от тези", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Следване на хаштаг", + "hashtag.total_volume": "Пълно количество в {days, plural,one {последния ден} other {последните {days} дни}}", + "hashtag.unfollow": "Спиране на следване на хаштаг", "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Показване на споделяния", "home.column_settings.show_replies": "Показване на отговори", @@ -287,8 +288,8 @@ "lightbox.expand": "Разгъване на полето за преглед на изображение", "lightbox.next": "Напред", "lightbox.previous": "Назад", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Покажи профила въпреки това", + "limited_account_hint.title": "Този профил е скрит от модераторите на сървъра Ви.", "lists.account.add": "Добавяне към списък", "lists.account.remove": "Премахване от списък", "lists.delete": "Изтриване на списък", @@ -315,11 +316,11 @@ "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", "navigation_bar.compose": "Композиране на нова публикация", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Директни съобщения", "navigation_bar.discover": "Откриване", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Редактирай профил", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Разглеждане", "navigation_bar.favourites": "Любими", "navigation_bar.filters": "Заглушени думи", "navigation_bar.follow_requests": "Заявки за последване", @@ -334,8 +335,8 @@ "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", "navigation_bar.security": "Сигурност", - "notification.admin.report": "{name} reported {target}", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.report": "{name} докладва {target}", + "notification.admin.sign_up": "{name} се регистрира", "notification.favourite": "{name} хареса твоята публикация", "notification.follow": "{name} те последва", "notification.follow_request": "{name} поиска да ви последва", @@ -344,16 +345,16 @@ "notification.poll": "Анкета, в която сте гласували, приключи", "notification.reblog": "{name} сподели твоята публикация", "notification.status": "{name} току-що публикува", - "notification.update": "{name} edited a post", + "notification.update": "{name} промени публикация", "notifications.clear": "Изчистване на известия", "notifications.clear_confirmation": "Сигурни ли сте, че искате да изчистите окончателно всичките си известия?", - "notifications.column_settings.admin.report": "New reports:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.report": "Нови доклади:", + "notifications.column_settings.admin.sign_up": "Нови регистрации:", "notifications.column_settings.alert": "Десктоп известия", "notifications.column_settings.favourite": "Предпочитани:", "notifications.column_settings.filter_bar.advanced": "Показване на всички категории", "notifications.column_settings.filter_bar.category": "Лента за бърз филтър", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Покажи лентата с филтри", "notifications.column_settings.follow": "Нови последователи:", "notifications.column_settings.follow_request": "Нови заявки за последване:", "notifications.column_settings.mention": "Споменавания:", @@ -363,9 +364,9 @@ "notifications.column_settings.show": "Покажи в колона", "notifications.column_settings.sound": "Пускане на звук", "notifications.column_settings.status": "Нови публикации:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.unread_notifications.category": "Непрочетени известия", + "notifications.column_settings.unread_notifications.highlight": "Отбележи непрочетените уведомления", + "notifications.column_settings.update": "Редакции:", "notifications.filter.all": "Всичко", "notifications.filter.boosts": "Споделяния", "notifications.filter.favourites": "Любими", @@ -389,15 +390,15 @@ "poll.total_votes": "{count, plural, one {# глас} other {# гласа}}", "poll.vote": "Гласуване", "poll.voted": "Вие гласувахте за този отговор", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# глас} other {# гласа}}", "poll_button.add_poll": "Добавяне на анкета", "poll_button.remove_poll": "Премахване на анкета", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Само споменатите хора", "privacy.private.long": "Post to followers only", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Само последователи", + "privacy.public.long": "Видимо за всички", "privacy.public.short": "Публично", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Скрито", @@ -468,7 +469,7 @@ "search_results.accounts": "Хора", "search_results.all": "All", "search_results.hashtags": "Хаштагове", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Не е намерено нищо за това търсене", "search_results.statuses": "Публикации", "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.", "search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}", @@ -482,16 +483,16 @@ "status.delete": "Изтриване", "status.detailed_status": "Подробен изглед на разговор", "status.direct": "Директно съобщение към @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Редакция", + "status.edited": "Редактирано на {date}", + "status.edited_x_times": "Редактирано {count, plural,one {{count} път} other {{count} пъти}}", "status.embed": "Вграждане", "status.favourite": "Предпочитани", - "status.filter": "Filter this post", + "status.filter": "Филтриране на поста", "status.filtered": "Филтрирано", - "status.hide": "Hide toot", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.hide": "Скриване на поста", + "status.history.created": "{name} създаде {date}", + "status.history.edited": "{name} редактира {date}", "status.load_more": "Зареждане на още", "status.media_hidden": "Мултимедията е скрита", "status.mention": "Споменаване", @@ -513,7 +514,7 @@ "status.report": "Докладване на @{name}", "status.sensitive_warning": "Деликатно съдържание", "status.share": "Споделяне", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Покажи въпреки това", "status.show_less": "Покажи по-малко", "status.show_less_all": "Покажи по-малко за всички", "status.show_more": "Покажи повече", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Не е налично", "status.unmute_conversation": "Раззаглушаване на разговор", "status.unpin": "Разкачане от профил", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Отхвърляне на предложение", "suggestions.header": "Може да се интересувате от…", "tabs_bar.federated_timeline": "Обединен", @@ -550,14 +554,14 @@ "upload_error.poll": "Качването на файлове не е позволено с анкети.", "upload_form.audio_description": "Опишете за хора със загуба на слуха", "upload_form.description": "Опишете за хора със зрителни увреждания", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Без добавено описание", "upload_form.edit": "Редакция", "upload_form.thumbnail": "Промяна на миниизображението", "upload_form.undo": "Отмяна", "upload_form.video_description": "Опишете за хора със загуба на слуха или зрително увреждане", "upload_modal.analyzing_picture": "Анализ на снимка…", "upload_modal.apply": "Прилагане", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Прилагане…", "upload_modal.choose_image": "Избор на изображение", "upload_modal.description_placeholder": "Ах, чудна българска земьо, полюшвай цъфтящи жита", "upload_modal.detect_text": "Откриване на текст от картина", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 94b0477b5..dfa718ae0 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -24,6 +24,7 @@ "account.follows_you": "তোমাকে অনুসরণ করে", "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে", "account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।", "account.media": "মিডিয়া", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "পাওয়া যাচ্ছে না", "status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে", "status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "সাহায্যের পরামর্শগুলো সরাতে", "suggestions.header": "আপনি হয়তোবা এগুলোতে আগ্রহী হতে পারেন…", "tabs_bar.federated_timeline": "যুক্তবিশ্ব", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 50837691f..f3d19f9a2 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -24,6 +24,7 @@ "account.follows_you": "Ho heul", "account.hide_reblogs": "Kuzh toudoù rannet gant @{name}", "account.joined": "Amañ abaoe {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}", "account.locked_info": "Prennet eo ar gont-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Dihegerz", "status.unmute_conversation": "Diguzhat ar gaozeadenn", "status.unpin": "Dispilhennañ eus ar profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dilezel damvenegoù", "suggestions.header": "Marteze e vefec'h dedenet gant…", "tabs_bar.federated_timeline": "Kevredet", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index c3fe88121..32faea99a 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -24,6 +24,7 @@ "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", "account.joined": "Membre des de {date}", + "account.languages": "Canviar les llengües subscrits", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", "account.media": "Multimèdia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", + "subscribed_languages.lead": "Només els apunts en les llengües seleccionades apareixeran en le teves línies de temps Inici i llista després del canvi. No en seleccionis cap per a rebre apunts en totes les llengües.", + "subscribed_languages.save": "Desa els canvis", + "subscribed_languages.target": "Canvia les llengües subscrites per a {target}", "suggestions.dismiss": "Ignora el suggeriment", "suggestions.header": "És possible que estiguis interessat en…", "tabs_bar.federated_timeline": "Federat", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 19d9550d0..1497e31a3 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -24,6 +24,7 @@ "account.follows_you": "شوێنکەوتووەکانت", "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", "account.joined": "بەشداری {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە", "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.", "account.media": "میدیا", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "بەردەست نیە", "status.unmute_conversation": "گفتوگۆی بێدەنگ", "status.unpin": "لە سەرەوە لایبە", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "ڕەتکردنەوەی پێشنیار", "suggestions.header": "لەوانەیە حەزت لەمەش بێت…", "tabs_bar.federated_timeline": "گشتی", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 5ca3f4a4b..efc584c66 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -24,6 +24,7 @@ "account.follows_you": "Vi seguita", "account.hide_reblogs": "Piattà spartere da @{name}", "account.joined": "Quì dapoi {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}", "account.locked_info": "U statutu di vita privata di u contu hè chjosu. U pruprietariu esamina manualmente e dumande d'abbunamentu.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Micca dispunibule", "status.unmute_conversation": "Ùn piattà più a cunversazione", "status.unpin": "Spuntarulà da u prufile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Righjittà a pruposta", "suggestions.header": "Site forse interessatu·a da…", "tabs_bar.federated_timeline": "Glubale", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index ef1a13d8f..a5c512c0f 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -24,6 +24,7 @@ "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", "account.joined": "Založen {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", "account.media": "Média", @@ -59,7 +60,7 @@ "alert.unexpected.title": "Jejda!", "announcement.announcement": "Oznámení", "attachments_list.unprocessed": "(nezpracováno)", - "audio.hide": "Hide audio", + "audio.hide": "Skrýt zvuk", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.", @@ -197,22 +198,22 @@ "explore.trending_links": "Zprávy", "explore.trending_statuses": "Příspěvky", "explore.trending_tags": "Hashtagy", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Tato kategorie filtru se nevztahuje na kontext, ve kterém jste tento příspěvek otevřeli. Pokud chcete, aby byl příspěvek filtrován i v tomto kontextu, budete muset filtr upravit.", + "filter_modal.added.context_mismatch_title": "Kontext se neshoduje!", + "filter_modal.added.expired_explanation": "Tato kategorie filtrů vypršela, budete muset změnit datum vypršení platnosti, aby mohla být použita.", + "filter_modal.added.expired_title": "Vypršel filtr!", + "filter_modal.added.review_and_configure": "Chcete-li zkontrolovat a dále konfigurovat tuto kategorii filtru, přejděte na {settings_link}.", + "filter_modal.added.review_and_configure_title": "Nastavení filtru", + "filter_modal.added.settings_link": "stránka nastavení", + "filter_modal.added.short_explanation": "Tento příspěvek byl přidán do následující kategorie filtrů: {title}.", + "filter_modal.added.title": "Filtr přidán!", + "filter_modal.select_filter.context_mismatch": "nevztahuje se na tento kontext", + "filter_modal.select_filter.expired": "vypršela platnost", + "filter_modal.select_filter.prompt_new": "Nová kategorie: {name}", + "filter_modal.select_filter.search": "Vyhledat nebo vytvořit", + "filter_modal.select_filter.subtitle": "Použít existující kategorii nebo vytvořit novou kategorii", + "filter_modal.select_filter.title": "Filtrovat tento příspěvek", + "filter_modal.title.status": "Filtrovat příspěvek", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Sledujte lidi, jejichž příspěvky chcete vidět! Tady jsou nějaké návrhy.", "follow_recommendations.lead": "Příspěvky od lidí, které sledujete, se budou objevovat v chronologickém pořadí ve vaší domovské ose. Nebojte se, že uděláte chybu, můžete lidi stejně snadno kdykoliv přestat sledovat!", @@ -237,9 +238,9 @@ "hashtag.column_settings.tag_mode.any": "Jakékoliv z těchto", "hashtag.column_settings.tag_mode.none": "Žádné z těchto", "hashtag.column_settings.tag_toggle": "Zahrnout v tomto sloupci dodatečné tagy", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Sledovat hashtag", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Zrušit sledování hashtagu", "home.column_settings.basic": "Základní", "home.column_settings.show_reblogs": "Zobrazit boosty", "home.column_settings.show_replies": "Zobrazit odpovědi", @@ -487,7 +488,7 @@ "status.edited_x_times": "Upraven {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}", "status.embed": "Vložit na web", "status.favourite": "Oblíbit", - "status.filter": "Filter this post", + "status.filter": "Filtrovat tento příspěvek", "status.filtered": "Filtrováno", "status.hide": "Skrýt příspěvek", "status.history.created": "Uživatel {name} vytvořil {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Odmítnout návrh", "suggestions.header": "Mohlo by vás zajímat…", "tabs_bar.federated_timeline": "Federovaná", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index cb1c90d69..de59b5ac5 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -24,6 +24,7 @@ "account.follows_you": "Yn eich dilyn chi", "account.hide_reblogs": "Cuddio bwstiau o @{name}", "account.joined": "Ymunodd {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}", "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", "account.media": "Cyfryngau", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Dim ar gael", "status.unmute_conversation": "Dad-dawelu sgwrs", "status.unpin": "Dadbinio o'r proffil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Diswyddo", "suggestions.header": "Efallai y bydd gennych ddiddordeb mewn…", "tabs_bar.federated_timeline": "Ffederasiwn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 80cb8e6c6..ffa6fdd15 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -24,6 +24,7 @@ "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul boosts fra @{name}", "account.joined": "Tilmeldt {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", "account.media": "Medier", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", + "subscribed_languages.lead": "Kun indlæg på udvalgte sprog vil fremgå på Hjem og listetidslinjer efter ændringen. Vælg ingen for at modtage indlæg på alle sprog.", + "subscribed_languages.save": "Gem ændringer", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Afvis foreslag", "suggestions.header": "Du er måske interesseret i…", "tabs_bar.federated_timeline": "Fælles", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 9bed25526..a8b841a26 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -24,6 +24,7 @@ "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined": "Beigetreten am {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Diesem Profil folgt niemand", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung von Konversation aufheben", "status.unpin": "Vom Profil lösen", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Empfehlung ausblenden", "suggestions.header": "Du bist vielleicht interessiert an…", "tabs_bar.federated_timeline": "Föderation", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 999f67c73..d90455b51 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -24,6 +24,7 @@ "account.follows_you": "Σε ακολουθεί", "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", "account.joined": "Μέλος από τις {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε την {date}", "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", "account.media": "Πολυμέσα", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Μη διαθέσιμα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Απόρριψη πρότασης", "suggestions.header": "Ίσως να ενδιαφέρεσαι για…", "tabs_bar.federated_timeline": "Ομοσπονδιακή", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 2287dcda5..eab3be805 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 082c53de7..0363f6715 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -24,6 +24,7 @@ "account.follows_you": "Sekvas vin", "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", "account.joined": "Kuniĝis {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", "account.media": "Aŭdovidaĵoj", @@ -59,7 +60,7 @@ "alert.unexpected.title": "Aj!", "announcement.announcement": "Anonco", "attachments_list.unprocessed": "(neprilaborita)", - "audio.hide": "Hide audio", + "audio.hide": "Kaŝi aŭdion", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", @@ -202,16 +203,16 @@ "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "Filtrilopcioj", + "filter_modal.added.settings_link": "opciopaĝo", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.expired": "eksvalidiĝinta", + "filter_modal.select_filter.prompt_new": "Nova klaso: {name}", + "filter_modal.select_filter.search": "Serĉi aŭ krei", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", + "filter_modal.select_filter.title": "Filtri ĉi afiŝo", "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Farita", "follow_recommendations.heading": "Sekvi la personojn kies mesaĝojn vi volas vidi! Jen iom da sugestoj.", @@ -487,7 +488,7 @@ "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", "status.embed": "Enkorpigi", "status.favourite": "Aldoni al viaj preferaĵoj", - "status.filter": "Filter this post", + "status.filter": "Filtri ĉi afiŝo", "status.filtered": "Filtrita", "status.hide": "Kaŝi la mesaĝon", "status.history.created": "{name} kreis {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nedisponebla", "status.unmute_conversation": "Malsilentigi la konversacion", "status.unpin": "Depingli de profilo", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Forigi la proponon", "suggestions.header": "Vi povus interesiĝi pri…", "tabs_bar.federated_timeline": "Fratara", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 27ebd749d..8a7335ac0 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -24,6 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar adhesiones de @{name}", "account.joined": "En este servidor desde {date}", + "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}", "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.", "account.media": "Medios", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index bb03a2975..2bcc3a554 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -24,6 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -197,22 +198,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Publicaciones", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que ha accedido a esta publlicación. Si quieres que la publicación sea filtrada también en este contexto, tendrás que editar el filtro.", + "filter_modal.added.context_mismatch_title": "¡El contexto no coincide!", + "filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado, necesitará cambiar la fecha de caducidad para que se aplique.", + "filter_modal.added.expired_title": "¡Filtro caducado!", + "filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Ajustes de filtro", + "filter_modal.added.settings_link": "página de ajustes", + "filter_modal.added.short_explanation": "Esta publicación ha sido añadida a la siguiente categoría de filtros: {title}.", + "filter_modal.added.title": "¡Filtro añadido!", + "filter_modal.select_filter.context_mismatch": "no se aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nueva categoría: {name}", + "filter_modal.select_filter.search": "Buscar o crear", + "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", + "filter_modal.select_filter.title": "Filtrar esta publicación", + "filter_modal.title.status": "Filtrar una publicación", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -487,7 +488,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} time} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicación", "status.filtered": "Filtrado", "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federado", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 7c9700ecb..ade9480d7 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -24,6 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 6737111fd..3eaaa12ec 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -24,6 +24,7 @@ "account.follows_you": "Jälgib Teid", "account.hide_reblogs": "Peida upitused kasutajalt @{name}", "account.joined": "Liitus {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Selle lingi autorsust kontrolliti {date}", "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.", "account.media": "Meedia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Pole saadaval", "status.unmute_conversation": "Ära vaigista vestlust", "status.unpin": "Kinnita profiililt lahti", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Eira soovitust", "suggestions.header": "Teid võib huvitada…", "tabs_bar.federated_timeline": "Föderatiivne", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index c8062f004..5b72eeb2d 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -24,6 +24,7 @@ "account.follows_you": "Jarraitzen dizu", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", "account.joined": "{date}(e)an elkartua", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}", "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", "account.media": "Multimedia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ez eskuragarri", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Errefusatu proposamena", "suggestions.header": "Hau interesatu dakizuke…", "tabs_bar.federated_timeline": "Federatua", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 775f38475..f3e6fbc72 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -24,6 +24,7 @@ "account.follows_you": "پی می‌گیردتان", "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", "account.joined": "پیوسته از {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد", "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.", "account.media": "رسانه", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "ناموجود", "status.unmute_conversation": "رفع خموشی گفت‌وگو", "status.unpin": "برداشتن سنجاق از نمایه", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "نادیده گرفتن پیشنهاد", "suggestions.header": "شاید این هم برایتان جالب باشد…", "tabs_bar.federated_timeline": "همگانی", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 52afeaa5d..6920093f4 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -24,6 +24,7 @@ "account.follows_you": "Seuraa sinua", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", "account.joined": "Liittynyt {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}", "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Hylkää ehdotus", "suggestions.header": "Saatat olla kiinnostunut myös…", "tabs_bar.federated_timeline": "Yleinen", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index dcac5c880..9cbbc3c03 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -24,6 +24,7 @@ "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", "account.joined": "Ici depuis {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", "account.media": "Médias", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Rejeter la suggestion", "suggestions.header": "Vous pourriez être intéressé·e par…", "tabs_bar.federated_timeline": "Fil public global", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index a53a1cf52..1e49a7e17 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -24,6 +24,7 @@ "account.follows_you": "Folget dy", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Registrearre op {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Net beskikber", "status.unmute_conversation": "Petear net mear negearre", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index e05c4a41d..e9e1e96d4 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -24,6 +24,7 @@ "account.follows_you": "Do do leanúint", "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", "account.joined": "Ina bhall ó {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", "account.media": "Ábhair", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Díphionnáil de do phróifíl", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index f874637fa..7f17df51e 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -24,6 +24,7 @@ "account.follows_you": "’Gad leantainn", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", "account.joined": "Air ballrachd fhaighinn {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", "account.media": "Meadhanan", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Leig seachad am moladh", "suggestions.header": "Dh’fhaoidte gu bheil ùidh agad ann an…", "tabs_bar.federated_timeline": "Co-naisgte", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c584dd551..215956d49 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -24,6 +24,7 @@ "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", "account.joined": "Uníuse {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", "account.media": "Multimedia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Rexeitar suxestión", "suggestions.header": "Poderíache interesar…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 81253fd1f..9c60de8ca 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -24,6 +24,7 @@ "account.follows_you": "במעקב אחריך", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", "account.joined": "הצטרפו ב{date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}", "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.", "account.media": "מדיה", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "להתעלם מהצעה", "suggestions.header": "ייתכן שזה יעניין אותך…", "tabs_bar.federated_timeline": "פיד כללי (בין-קהילתי)", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index d2403c1f5..6fab737f9 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -24,6 +24,7 @@ "account.follows_you": "आपको फॉलो करता है", "account.hide_reblogs": "@{name} के बूस्ट छुपाएं", "account.joined": "शामिल हुये {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था", "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।", "account.media": "मीडिया", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "अनुपलब्ध", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "फ़ेडरेटेड", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index c66de9c0d..94ff9d3a3 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -24,6 +24,7 @@ "account.follows_you": "Prati te", "account.hide_reblogs": "Sakrij boostove od @{name}", "account.joined": "Pridružio se {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}", "account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.", "account.media": "Medijski sadržaj", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nije dostupno", "status.unmute_conversation": "Poništi utišavanje razgovora", "status.unpin": "Otkvači s profila", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Odbaci prijedlog", "suggestions.header": "Možda Vas zanima…", "tabs_bar.federated_timeline": "Federalno", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 08cb01dc3..cc3602956 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -24,6 +24,7 @@ "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", "account.joined": "Csatlakozott {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", "account.media": "Média", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Javaslat elvetése", "suggestions.header": "Esetleg érdekelhet…", "tabs_bar.federated_timeline": "Föderációs", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 5a18eff04..dc1bec6e4 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -24,6 +24,7 @@ "account.follows_you": "Հետեւում է քեզ", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", "account.joined": "Միացել է {date}-ից", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Սոյն յղման տիրապետումը ստուգուած է՝ {date}֊ին", "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։", "account.media": "Մեդիա", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Անհասանելի", "status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը", "status.unpin": "Հանել անձնական էջից", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Անտեսել առաջարկը", "suggestions.header": "Միգուցէ քեզ հետաքրքրի…", "tabs_bar.federated_timeline": "Դաշնային", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 9c3879212..8b615038b 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -24,6 +24,7 @@ "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", "account.joined": "Bergabung {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}", "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", "account.media": "Media", @@ -59,7 +60,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Pengumuman", "attachments_list.unprocessed": "(tidak diproses)", - "audio.hide": "Hide audio", + "audio.hide": "Indonesia", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.", @@ -197,7 +198,7 @@ "explore.trending_links": "Berita", "explore.trending_statuses": "Postingan", "explore.trending_tags": "Tagar", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_explanation": "Indonesia Translate", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Tak tersedia", "status.unmute_conversation": "Bunyikan percakapan", "status.unpin": "Hapus sematan dari profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Hentikan saran", "suggestions.header": "Anda mungkin tertarik dg…", "tabs_bar.federated_timeline": "Gabungan", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 28edbc7a3..312ef70ae 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -24,6 +24,7 @@ "account.follows_you": "Sequas tu", "account.hide_reblogs": "Celez busti de @{name}", "account.joined": "Juntas ye {date}", + "account.languages": "Chanjez abonita lingui", "account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}", "account.locked_info": "La privatesostaco di ca konto fixesas quale lokata. Proprietato manue kontrolas personi qui povas sequar.", "account.media": "Medio", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", "status.unpin": "Depinglagez de profilo", + "subscribed_languages.lead": "Nur posti en selektita lingui aparos en vua hemo e listotempolineo pos chanjo. Selektez nulo por ganar posti en omna lingui.", + "subscribed_languages.save": "Sparez chanji", + "subscribed_languages.target": "Chanjez abonita lingui por {target}", "suggestions.dismiss": "Desklozez sugestajo", "suggestions.header": "Vu forsan havas intereso pri…", "tabs_bar.federated_timeline": "Federata", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e15656a50..aa46b748b 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -24,6 +24,7 @@ "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", "account.joined": "Gerðist þátttakandi {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", "account.media": "Myndskrár", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Hafna tillögu", "suggestions.header": "Þú gætir haft áhuga á…", "tabs_bar.federated_timeline": "Sameiginlegt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 3e59c2782..28e9902a8 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -24,6 +24,7 @@ "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.joined": "Su questa istanza dal {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Elimina suggerimento", "suggestions.header": "Ti potrebbe interessare…", "tabs_bar.federated_timeline": "Federazione", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 55cb2eb93..5de2a7abd 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -24,6 +24,7 @@ "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", "account.joined": "{date} に登録", + "account.languages": "Change subscribed languages", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", "account.media": "メディア", @@ -200,19 +201,19 @@ "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.expired_title": "フィルターの有効期限が切れています!", + "filter_modal.added.review_and_configure": "このフィルターカテゴリーを確認して設定するには、{settings_link}に移動します。", + "filter_modal.added.review_and_configure_title": "フィルター設定", + "filter_modal.added.settings_link": "設定", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.expired": "期限切れ", + "filter_modal.select_filter.prompt_new": "新しいカテゴリー: {name}", + "filter_modal.select_filter.search": "検索または新規作成", + "filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します", + "filter_modal.select_filter.title": "この投稿をフィルターする", + "filter_modal.title.status": "投稿をフィルターする", "follow_recommendations.done": "完了", "follow_recommendations.heading": "投稿を見たい人をフォローしてください!ここにおすすめがあります。", "follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!", @@ -487,7 +488,7 @@ "status.edited_x_times": "{count}回編集", "status.embed": "埋め込み", "status.favourite": "お気に入り", - "status.filter": "Filter this post", + "status.filter": "この投稿をフィルターする", "status.filtered": "フィルターされました", "status.hide": "トゥートを非表示", "status.history.created": "{name}さんが{date}に作成", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "隠す", "suggestions.header": "興味あるかもしれません…", "tabs_bar.federated_timeline": "連合", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index c6c72b6ce..8021d8be2 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -24,6 +24,7 @@ "account.follows_you": "მოგყვებათ", "account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "მედია", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "საუბარზე გაჩუმების მოშორება", "status.unpin": "პროფილიდან პინის მოშორება", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "ფედერალური", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 035ec7c84..78f41c636 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -24,6 +24,7 @@ "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", "account.joined": "Yerna-d {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}", "account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.", "account.media": "Amidya", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ulac-it", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Sefsex asumer", "suggestions.header": "Ahat ad tcelgeḍ deg…", "tabs_bar.federated_timeline": "Amatu", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index edcf0650c..29b6aa16a 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -24,6 +24,7 @@ "account.follows_you": "Сізге жазылыпты", "account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Сілтеме меншігі расталған күн {date}", "account.locked_info": "Бұл қолданушы өзі туралы мәліметтерді жасырған. Тек жазылғандар ғана көре алады.", "account.media": "Медиа", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Қолжетімді емес", "status.unmute_conversation": "Пікірталасты үнсіз қылмау", "status.unpin": "Профильден алып тастау", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Өткізіп жіберу", "suggestions.header": "Қызығуыңыз мүмкін…", "tabs_bar.federated_timeline": "Жаһандық", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 3d2e0a68d..ed97bac69 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 300b2d7c1..e17582189 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -24,6 +24,7 @@ "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", "account.joined": "{date}에 가입함", + "account.languages": "구독한 언어 변경", "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨", "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.", "account.media": "미디어", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", + "subscribed_languages.lead": "변경 후에는 선택한 언어들로 작성된 게시물들만 홈 타임라인과 리스트 타임라인에 나타나게 됩니다. 아무 것도 선택하지 않으면 모든 언어로 작성된 게시물을 받아봅니다.", + "subscribed_languages.save": "변경사항 저장", + "subscribed_languages.target": "{target}에 대한 구독 언어 변경", "suggestions.dismiss": "추천 지우기", "suggestions.header": "여기에 관심이 있을 것 같습니다…", "tabs_bar.federated_timeline": "연합", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 06c0e6f7a..105c45a2d 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -24,6 +24,7 @@ "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", "account.joined": "Di {date} de tevlî bû", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.", "account.media": "Medya", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index f6a85a932..6b901f70d 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -24,6 +24,7 @@ "account.follows_you": "Y'th hol", "account.hide_reblogs": "Kudha kenerthow a @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Perghenogeth an kolm ma a veu checkys dhe {date}", "account.locked_info": "Studh privetter an akont ma yw alhwedhys. An perghen a wra dasweles dre leuv piw a yll aga holya.", "account.media": "Myski", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ankavadow", "status.unmute_conversation": "Antawhe kesklapp", "status.unpin": "Anfastya a brofil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Gordhyllo profyans", "suggestions.header": "Martesen y fydh dhe les dhywgh…", "tabs_bar.federated_timeline": "Keffrysys", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 4e238273e..0be6c4e68 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 33f6832bf..3b538799e 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -24,6 +24,7 @@ "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", "account.joined": "Pievienojās {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", "account.media": "Multivide", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Noraidīt ieteikumu", "suggestions.header": "Jūs varētu interesēt arī…", "tabs_bar.federated_timeline": "Federētā", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index d782dff64..2c001c37c 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -24,6 +24,7 @@ "account.follows_you": "Те следи тебе", "account.hide_reblogs": "Сокриј буст од @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}", "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.", "account.media": "Медија", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 37969475d..446901372 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -24,6 +24,7 @@ "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു", "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക", "account.joined": "{date} ൽ ചേർന്നു", + "account.languages": "Change subscribed languages", "account.link_verified_on": "ഈ ലിങ്കിന്റെ ഉടമസ്തത {date} ഇൽ ഉറപ്പാക്കിയതാണ്", "account.locked_info": "ഈ അംഗത്വത്തിന്റെ സ്വകാര്യതാ നിലപാട് അനുസരിച്ച് പിന്തുടരുന്നവരെ തിരഞ്ഞെടുക്കാനുള്ള വിവേചനാധികാരം ഉടമസ്ഥനിൽ നിഷിപ്തമായിരിക്കുന്നു.", "account.media": "മീഡിയ", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "ലഭ്യമല്ല", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "നിർദ്ദേശം ഒഴിവാക്കൂ", "suggestions.header": "നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടാകാം…", "tabs_bar.federated_timeline": "സംയുക്തമായ", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 09eaea3f9..8c7f0ec11 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -24,6 +24,7 @@ "account.follows_you": "तुमचा अनुयायी आहे", "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "दृक्‌‌श्राव्य मजकूर", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 6a1302329..4e50ef465 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -24,6 +24,7 @@ "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan galakan daripada @{name}", "account.joined": "Sertai pada {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Pemilikan pautan ini telah disemak pada {date}", "account.locked_info": "Status privasi akaun ini dikunci. Pemiliknya menyaring sendiri siapa yang boleh mengikutinya.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Tidak tersedia", "status.unmute_conversation": "Nyahbisukan perbualan", "status.unpin": "Nyahsemat daripada profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Batalkan cadangan", "suggestions.header": "Anda mungkin berminat dengan…", "tabs_bar.federated_timeline": "Bersekutu", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index b48ebbc16..7831310d8 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -24,6 +24,7 @@ "account.follows_you": "Volgt jou", "account.hide_reblogs": "Boosts van @{name} verbergen", "account.joined": "Geregistreerd op {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie diegene kan volgen.", "account.media": "Media", @@ -198,21 +199,21 @@ "explore.trending_statuses": "Berichten", "explore.trending_tags": "Hashtags", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "Context komt niet overeen!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "Filter verlopen!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.review_and_configure_title": "Filterinstellingen", + "filter_modal.added.settings_link": "instellingspagina", + "filter_modal.added.short_explanation": "Dit bericht is toegevoegd aan de volgende filtercategorie: {title}.", + "filter_modal.added.title": "Filter toegevoegd!", + "filter_modal.select_filter.context_mismatch": "is niet van toepassing op deze context", + "filter_modal.select_filter.expired": "verlopen", + "filter_modal.select_filter.prompt_new": "Nieuwe categorie: {name}", + "filter_modal.select_filter.search": "Zoeken of toevoegen", + "filter_modal.select_filter.subtitle": "Gebruik een bestaande categorie of maak een nieuwe aan", + "filter_modal.select_filter.title": "Dit bericht filteren", + "filter_modal.title.status": "Een bericht filteren", "follow_recommendations.done": "Klaar", "follow_recommendations.heading": "Volg mensen waarvan je graag berichten wil zien! Hier zijn enkele aanbevelingen.", "follow_recommendations.lead": "Berichten van mensen die je volgt zullen in chronologische volgorde onder start verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", @@ -238,7 +239,7 @@ "hashtag.column_settings.tag_mode.none": "Geen van deze", "hashtag.column_settings.tag_toggle": "Additionele tags aan deze kolom toevoegen", "hashtag.follow": "Hashtag volgen", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.total_volume": "Totale hoeveelheid in {days, plural, one {het afgelopen etmaal} other {de afgelopen {days} dagen}}", "hashtag.unfollow": "Hashtag ontvolgen", "home.column_settings.basic": "Algemeen", "home.column_settings.show_reblogs": "Boosts tonen", @@ -487,7 +488,7 @@ "status.edited_x_times": "{count, plural, one {{count} keer} other {{count} keer}} bewerkt", "status.embed": "Insluiten", "status.favourite": "Favoriet", - "status.filter": "Filter this post", + "status.filter": "Dit bericht filteren", "status.filtered": "Gefilterd", "status.hide": "Bericht verbergen", "status.history.created": "{name} plaatste dit {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Wijzigingen opslaan", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Aanbeveling verwerpen", "suggestions.header": "Je bent waarschijnlijk ook geïnteresseerd in…", "tabs_bar.federated_timeline": "Globaal", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 33c06e11e..785662bb5 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -24,6 +24,7 @@ "account.follows_you": "Fylgjer deg", "account.hide_reblogs": "Gøym fremhevingar frå @{name}", "account.joined": "Vart med {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ikkje tilgjengeleg", "status.unmute_conversation": "Opphev målbinding av samtalen", "status.unpin": "Løys frå profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Avslå framlegg", "suggestions.header": "Du er kanskje interessert i…", "tabs_bar.federated_timeline": "Føderert", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 6e2783713..29df0b2d4 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -24,6 +24,7 @@ "account.follows_you": "Følger deg", "account.hide_reblogs": "Skjul fremhevinger fra @{name}", "account.joined": "Ble med den {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}", "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Utelukk forslaget", "suggestions.header": "Du er kanskje interessert i …", "tabs_bar.federated_timeline": "Felles", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index fa3ef3967..66ef6c76f 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -24,6 +24,7 @@ "account.follows_you": "Vos sèc", "account.hide_reblogs": "Rescondre los partatges de @{name}", "account.joined": "Arribèt en {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La proprietat d’aqueste ligam foguèt verificada lo {date}", "account.locked_info": "L’estatut de privacitat del compte es configurat sus clavat. Lo proprietari causís qual pòt sègre son compte.", "account.media": "Mèdias", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Pas disponible", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Regetar la suggestion", "suggestions.header": "Vos poiriá interessar…", "tabs_bar.federated_timeline": "Flux public global", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index c77444bff..bde5388c6 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index e264f8055..d68c2aaa1 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -24,6 +24,7 @@ "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined": "Dołączył(a) {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", "account.media": "Zawartość multimedialna", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Odrzuć sugestię", "suggestions.header": "Może Cię zainteresować…", "tabs_bar.federated_timeline": "Globalne", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index ab1443ece..ba349524e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -24,6 +24,7 @@ "account.follows_you": "te segue", "account.hide_reblogs": "Ocultar boosts de @{name}", "account.joined": "Entrou em {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "link verificado em {date}", "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", "account.media": "Mídia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Ignorar sugestão", "suggestions.header": "Talvez seja do teu interesse…", "tabs_bar.federated_timeline": "Linha global", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 15fb991bd..d03e66572 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -24,6 +24,7 @@ "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", "account.joined": "Ingressou em {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", "account.media": "Média", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dispensar a sugestão", "suggestions.header": "Tu podes estar interessado em…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index ff5ec9b2a..626a8a1ed 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -24,6 +24,7 @@ "account.follows_you": "Este abonat la tine", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", "account.joined": "S-a înscris în {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}", "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Indisponibil", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Omite sugestia", "suggestions.header": "Ai putea fi interesat de…", "tabs_bar.federated_timeline": "Global", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 4c277544b..51e2d6159 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -24,6 +24,7 @@ "account.follows_you": "Подписан(а) на вас", "account.hide_reblogs": "Скрыть продвижения от @{name}", "account.joined": "Зарегистрирован(а) с {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Владение этой ссылкой было проверено {date}", "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.", "account.media": "Медиа", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Невозможно отобразить файл", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Удалить предложение", "suggestions.header": "Вам может быть интересно…", "tabs_bar.federated_timeline": "Глобальная", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 2ebda63cd..e3037bde0 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -24,6 +24,7 @@ "account.follows_you": "त्वामनुसरति", "account.hide_reblogs": "@{name} मित्रस्य प्रकाशनानि छिद्यन्ताम्", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "अन्तर्जालस्थानस्यास्य स्वामित्वं परीक्षितमासीत् {date} दिने", "account.locked_info": "एतस्या लेखायाः गुह्यता \"निषिद्ध\"इति वर्तते । स्वामी स्वयञ्चिनोति कोऽनुसर्ता भवितुमर्हतीति ।", "account.media": "सामग्री", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 7482d15fe..4264eaacf 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -24,6 +24,7 @@ "account.follows_you": "Ti sighit", "account.hide_reblogs": "Cua is cumpartziduras de @{name}", "account.joined": "At aderidu su {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Sa propiedade de custu ligòngiu est istada controllada su {date}", "account.locked_info": "S'istadu de riservadesa de custu contu est istadu cunfiguradu comente blocadu. Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.", "account.media": "Cuntenutu multimediale", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No est a disponimentu", "status.unmute_conversation": "Torra a ativare s'arresonada", "status.unpin": "Boga dae pitzu de su profilu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Iscarta cussìgiu", "suggestions.header": "Est possìbile chi tèngias interessu in…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 170c34b57..3a26e967a 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -24,7 +24,8 @@ "account.follows_you": "ඔබව අනුගමනය කරයි", "account.hide_reblogs": "@{name}සිට බූස්ට් සඟවන්න", "account.joined": "{date} එක් වී ඇත", - "account.link_verified_on": "මෙම සබැඳියේ හිමිකාරිත්වය {date} දින පරීක්ෂා කරන ලදී", + "account.languages": "Change subscribed languages", + "account.link_verified_on": "මෙම සබැඳියේ අයිතිය {date} දී පරීක්‍ෂා කෙරිණි", "account.locked_info": "මෙම ගිණුමේ රහස්‍යතා තත්ත්වය අගුලු දමා ඇත. හිමිකරු ඔවුන් අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව සමාලෝචනය කරයි.", "account.media": "මාධ්‍යය", "account.mention": "@{name} සැඳහුම", @@ -32,7 +33,7 @@ "account.mute": "@{name} නිහඬ කරන්න", "account.mute_notifications": "@{name}වෙතින් දැනුම්දීම් නිහඬ කරන්න", "account.muted": "නිහඬ කළා", - "account.posts": "ටූට්ස්", + "account.posts": "ලිපි", "account.posts_with_replies": "ටූට්ස් සහ පිළිතුරු", "account.report": "@{name} වාර්තා කරන්න", "account.requested": "අනුමැතිය බලාපොරොත්තුවෙන්", @@ -41,19 +42,19 @@ "account.statuses_counter": "{count, plural, one {{counter} ටූට්} other {{counter} ටූට්ස්}}", "account.unblock": "@{name} අනවහිර කරන්න", "account.unblock_domain": "{domain} වසම අනවහිර කරන්න", - "account.unblock_short": "අවහිර කිරීම ඉවත් කරන්න", + "account.unblock_short": "අනවහිර", "account.unendorse": "පැතිකඩෙහි විශේෂාංග නොකරන්න", "account.unfollow": "අනුගමනය නොකරන්න", "account.unmute": "@{name}නිහඬ නොකරන්න", "account.unmute_notifications": "@{name}වෙතින් දැනුම්දීම් නිහඬ නොකරන්න", - "account.unmute_short": "නිහඬ නොකරන්න", - "account_note.placeholder": "සටහන එකතු කිරීමට ක්ලික් කරන්න", + "account.unmute_short": "නොනිහඬ", + "account_note.placeholder": "සටහන යෙදීමට ඔබන්න", "admin.dashboard.daily_retention": "ලියාපදිංචි වීමෙන් පසු දිනකට පරිශීලක රඳවා ගැනීමේ අනුපාතය", "admin.dashboard.monthly_retention": "ලියාපදිංචි වීමෙන් පසු මාසය අනුව පරිශීලක රඳවා ගැනීමේ අනුපාතය", "admin.dashboard.retention.average": "සාමාන්යය", "admin.dashboard.retention.cohort": "ලියාපදිංචි වීමේ මාසය", "admin.dashboard.retention.cohort_size": "නව පරිශීලකයින්", - "alert.rate_limited.message": "කරුණාකර {retry_time, time, medium} ට පසු නැවත උත්සාහ කරන්න.", + "alert.rate_limited.message": "{retry_time, time, medium} කට පසුව උත්සාහ කරන්න.", "alert.rate_limited.title": "මිල සීමා සහිතයි", "alert.unexpected.message": "අනපේක්ෂිත දෝෂයක් ඇතිවුනා.", "alert.unexpected.title": "අපොයි!", @@ -77,23 +78,23 @@ "column.favourites": "ප්‍රියතමයන්", "column.follow_requests": "ඉල්ලීම් අනුගමනය කරන්න", "column.home": "මුල් පිටුව", - "column.lists": "ලැයිස්තුව", - "column.mutes": "සමඟ කළ පරිශීලකයන්", + "column.lists": "ලේඛන", + "column.mutes": "නිහඬ කළ අය", "column.notifications": "දැනුම්දීම්", - "column.pins": "පින් කළ දත", + "column.pins": "ඇමිණූ ලිපි", "column.public": "ෆෙඩරේටඩ් කාලරේඛාව", "column_back_button.label": "ආපසු", "column_header.hide_settings": "සැකසුම් සඟවන්න", "column_header.moveLeft_settings": "තීරුව වමට ගෙනයන්න", "column_header.moveRight_settings": "තීරුව දකුණට ගෙනයන්න", - "column_header.pin": "පින් කරන්න", + "column_header.pin": "අමුණන්න", "column_header.show_settings": "සැකසුම් පෙන්වන්න", - "column_header.unpin": "ඇමුණුම ඉවත් කරන්න", + "column_header.unpin": "ගළවන්න", "column_subheading.settings": "සැකසුම්", "community.column_settings.local_only": "ස්ථානීයව පමණයි", "community.column_settings.media_only": "මාධ්‍ය පමණයි", "community.column_settings.remote_only": "දුරස්ථව පමණයි", - "compose.language.change": "භාෂාව වෙනස් කරන්න", + "compose.language.change": "භාෂාව සංශෝධනය", "compose.language.search": "භාෂා සොයන්න...", "compose_form.direct_message_warning_learn_more": "තව දැනගන්න", "compose_form.encryption_warning": "Mastodon හි පළ කිරීම් අන්තයේ සිට අවසානය දක්වා සංකේතනය කර නොමැත. Mastodon හරහා කිසිදු සංවේදී තොරතුරක් බෙදා නොගන්න.", @@ -101,13 +102,13 @@ "compose_form.lock_disclaimer": "ඔබගේ ගිණුම {locked}නොවේ. ඔබගේ අනුගාමිකයින්ට පමණක් පළ කිරීම් බැලීමට ඕනෑම කෙනෙකුට ඔබව අනුගමනය කළ හැක.", "compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත", "compose_form.placeholder": "ඔබගේ සිතුවිලි මොනවාද?", - "compose_form.poll.add_option": "තේරීමක් එකතු කරන්න", + "compose_form.poll.add_option": "තේරීමක් යොදන්න", "compose_form.poll.duration": "මත විමසීමේ කාලය", "compose_form.poll.option_placeholder": "තේරීම {number}", "compose_form.poll.remove_option": "මෙම ඉවත් කරන්න", "compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයක් ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", "compose_form.poll.switch_to_single": "තනි තේරීමකට ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", - "compose_form.publish": "ප්‍රකාශ කරන්න", + "compose_form.publish": "ප්‍රකාශනය", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "වෙනස්කම් සුරකින්න", "compose_form.sensitive.hide": "{count, plural, one {මාධ්ය සංවේදී ලෙස සලකුණු කරන්න} other {මාධ්ය සංවේදී ලෙස සලකුණු කරන්න}}", @@ -115,11 +116,11 @@ "compose_form.sensitive.unmarked": "{count, plural, one {මාධ්‍ය සංවේදී ලෙස සලකුණු කර නැත} other {මාධ්‍ය සංවේදී ලෙස සලකුණු කර නැත}}", "compose_form.spoiler.marked": "අනතුරු ඇඟවීම පිටුපස පෙළ සඟවා ඇත", "compose_form.spoiler.unmarked": "ප්‍රයෝජනය සඟවා නැත", - "compose_form.spoiler_placeholder": "ඔබගේ අවවාදය මෙහි ලියන්න", + "compose_form.spoiler_placeholder": "අවවාදය මෙහි ලියන්න", "confirmation_modal.cancel": "අවලංගු", "confirmations.block.block_and_report": "අවහිර කර වාර්තා කරන්න", "confirmations.block.confirm": "අවහිර", - "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට අවශ්‍ය බව ද?", + "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට වුවමනා ද?", "confirmations.delete.confirm": "මකන්න", "confirmations.delete.message": "ඔබට මෙම තත්ත්වය මැකීමට අවශ්‍ය බව විශ්වාසද?", "confirmations.delete_list.confirm": "මකන්න", @@ -140,23 +141,23 @@ "confirmations.unfollow.confirm": "අනුගමනය නොකරන්න", "confirmations.unfollow.message": "ඔබට {name}අනුගමනය නොකිරීමට අවශ්‍ය බව විශ්වාසද?", "conversation.delete": "සංවාදය මකන්න", - "conversation.mark_as_read": "කියවූ ලෙස සලකුණු කරන්න", + "conversation.mark_as_read": "කියවූ බව යොදන්න", "conversation.open": "සංවාදය බලන්න", "conversation.with": "{names} සමඟ", "directory.federated": "දන්නා fediverse වලින්", - "directory.local": "{domain} පමණි", + "directory.local": "{domain} වෙතින් පමණි", "directory.new_arrivals": "නව පැමිණීම්", - "directory.recently_active": "මෑතකදී ක්රියාකාරී", + "directory.recently_active": "මෑත දී සක්‍රියයි", "embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම තත්ත්වය ඔබේ වෙබ් අඩවියට ඇතුළත් කරන්න.", "embed.preview": "එය පෙනෙන්නේ කෙසේද යන්න මෙන්න:", "emoji_button.activity": "ක්‍රියාකාරකම", - "emoji_button.clear": "පැහැදිලිව", + "emoji_button.clear": "මකන්න", "emoji_button.custom": "අභිරුචි", "emoji_button.flags": "කොඩි", "emoji_button.food": "ආහාර සහ පාන", - "emoji_button.label": "ඉමොජි ඇතුළු කරන්න", + "emoji_button.label": "ඉමොජි යොදන්න", "emoji_button.nature": "ස්වභාවික", - "emoji_button.not_found": "ගැළපෙන ඉමෝජි හමු නොවීය", + "emoji_button.not_found": "ගැළපෙන ඉමෝජි හමු නොවිණි", "emoji_button.objects": "වස්තූන්", "emoji_button.people": "මිනිසුන්", "emoji_button.recent": "නිතර භාවිතා වූ", @@ -166,12 +167,12 @@ "emoji_button.travel": "චාරිකා සහ ස්ථාන", "empty_column.account_suspended": "ගිණුම අත්හිටුවා ඇත", "empty_column.account_timeline": "මෙහි දත් නැත!", - "empty_column.account_unavailable": "පැතිකඩ නොමැත", - "empty_column.blocks": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", + "empty_column.account_unavailable": "පැතිකඩ නොතිබේ", + "empty_column.blocks": "කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", "empty_column.bookmarked_statuses": "ඔබට තවමත් පිටු සලකුණු කළ මෙවලම් කිසිවක් නොමැත. ඔබ එකක් පිටු සලකුණු කළ විට, එය මෙහි පෙන්වනු ඇත.", "empty_column.community": "දේශීය කාලරේඛාව හිස් ය. පන්දුව පෙරළීමට ප්‍රසිද්ධියේ යමක් ලියන්න!", "empty_column.direct": "ඔබට තවමත් සෘජු පණිවිඩ කිසිවක් නොමැත. ඔබ එකක් යවන විට හෝ ලැබුණු විට, එය මෙහි පෙන්වනු ඇත.", - "empty_column.domain_blocks": "අවහිර කළ වසම් නොමැත.", + "empty_column.domain_blocks": "අවහිර කරන ලද වසම් නැත.", "empty_column.explore_statuses": "දැන් කිසිවක් නැඹුරු නොවේ. පසුව නැවත පරීක්ෂා කරන්න!", "empty_column.favourited_statuses": "ඔබට තවමත් ප්‍රියතම දත් කිසිවක් නැත. ඔබ කැමති එකක් වූ විට, එය මෙහි පෙන්වනු ඇත.", "empty_column.favourites": "කිසිවෙකු තවමත් මෙම මෙවලමට ප්‍රිය කර නැත. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.", @@ -190,50 +191,50 @@ "error.unexpected_crash.next_steps": "පිටුව නැවුම් කිරීමට උත්සාහ කරන්න. එය උදව් නොකළහොත්, ඔබට තවමත් වෙනත් බ්‍රවුසරයක් හෝ ස්වදේශීය යෙදුමක් හරහා Mastodon භාවිත කිරීමට හැකි වේ.", "error.unexpected_crash.next_steps_addons": "ඒවා අක්‍රිය කර පිටුව නැවුම් කිරීමට උත්සාහ කරන්න. එය උදව් නොකළහොත්, ඔබට තවමත් වෙනත් බ්‍රවුසරයක් හෝ ස්වදේශීය යෙදුමක් හරහා Mastodon භාවිත කිරීමට හැකි වේ.", "errors.unexpected_crash.copy_stacktrace": "ස්ටැක්ට්රේස් පසුරු පුවරුවට පිටපත් කරන්න", - "errors.unexpected_crash.report_issue": "ගැටලුව වාර්තා කරන්න", + "errors.unexpected_crash.report_issue": "ගැටළුව වාර්තාව", "explore.search_results": "සෙවුම් ප්‍රතිඵල", - "explore.suggested_follows": "ඔයා වෙනුවෙන්", - "explore.title": "ගවේෂණය කරන්න", + "explore.suggested_follows": "ඔබට", + "explore.title": "ගවේශණය", "explore.trending_links": "පුවත්", - "explore.trending_statuses": "තනතුරු", + "explore.trending_statuses": "ලිපි", "explore.trending_tags": "හැෂ් ටැග්", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "පෙරහන ඉකුත්ය!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "පෙරහන් සැකසුම්", + "filter_modal.added.settings_link": "සැකසුම් පිටුව", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.expired": "ඉකුත්ය", + "filter_modal.select_filter.prompt_new": "නව ප්‍රවර්ගය: {name}", + "filter_modal.select_filter.search": "සොයන්න හෝ සාදන්න", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", - "follow_recommendations.done": "කළා", + "follow_recommendations.done": "අහවරයි", "follow_recommendations.heading": "ඔබ පළ කිරීම් බැලීමට කැමති පුද්ගලයින් අනුගමනය කරන්න! මෙන්න යෝජනා කිහිපයක්.", "follow_recommendations.lead": "ඔබ අනුගමන කරන පුද්ගලයින්ගේ පළ කිරීම් ඔබගේ නිවසේ සංග්‍රහයේ කාලානුක්‍රමික අනුපිළිවෙලට පෙන්වනු ඇත. වැරදි කිරීමට බිය නොවන්න, ඔබට ඕනෑම වේලාවක පහසුවෙන් මිනිසුන් අනුගමනය කළ නොහැක!", "follow_request.authorize": "අවසරලත්", - "follow_request.reject": "ප්රතික්ෂේප", + "follow_request.reject": "ප්‍රතික්‍ෂේප", "follow_requests.unlocked_explanation": "ඔබගේ ගිණුම අගුලු දමා නොතිබුණද, {domain} කාර්ය මණ්ඩලය සිතුවේ ඔබට මෙම ගිණුම් වලින් ලැබෙන ඉල්ලීම් හස්තීයව සමාලෝචනය කිරීමට අවශ්‍ය විය හැකි බවයි.", "generic.saved": "සුරැකිණි", "getting_started.developers": "සංවර්ධකයින්", "getting_started.directory": "පැතිකඩ නාමාවලිය", "getting_started.documentation": "ප්‍රලේඛනය", "getting_started.heading": "ඇරඹේ", - "getting_started.invite": "මිනිසුන්ට ආරාධනා කරන්න", + "getting_started.invite": "මිනිසුන්ට ආරාධනය", "getting_started.open_source_notice": "Mastodon යනු විවෘත කේත මෘදුකාංගයකි. ඔබට GitHub හි {github}ට දායක වීමට හෝ ගැටළු වාර්තා කිරීමට හැකිය.", "getting_started.security": "ගිණුමේ සැකසුම්", "getting_started.terms": "සේවාවේ කොන්දේසි", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", - "hashtag.column_settings.select.no_options_message": "යෝජනා කිසිවක් හමු නොවිණි", + "hashtag.column_settings.select.no_options_message": "යෝජනා හමු නොවිණි", "hashtag.column_settings.select.placeholder": "හැෂ් ටැග්…ඇතුලත් කරන්න", - "hashtag.column_settings.tag_mode.all": "මේ වගේ", + "hashtag.column_settings.tag_mode.all": "මේ සියල්ලම", "hashtag.column_settings.tag_mode.any": "ඇතුළත් එකක්", "hashtag.column_settings.tag_mode.none": "මේ කිසිවක් නැත", "hashtag.column_settings.tag_toggle": "මෙම තීරුවේ අමතර ටැග් ඇතුළත් කරන්න", @@ -242,7 +243,7 @@ "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "මූලික", "home.column_settings.show_reblogs": "බූස්ට් පෙන්වන්න", - "home.column_settings.show_replies": "ප්රතිචාර පෙන්වන්න", + "home.column_settings.show_replies": "පිළිතුරු පෙන්වන්න", "home.hide_announcements": "නිවේදන සඟවන්න", "home.show_announcements": "නිවේදන පෙන්වන්න", "intervals.full.days": "{number, plural, one {# දින} other {# දින}}", @@ -262,7 +263,7 @@ "keyboard_shortcuts.federated": "ෆෙඩරේටඩ් කාලරාමුව විවෘත කිරීමට", "keyboard_shortcuts.heading": "යතුරුපුවරු කෙටිමං", "keyboard_shortcuts.home": "නිවසේ කාලරේඛාව විවෘත කිරීමට", - "keyboard_shortcuts.hotkey": "උණුසුම් යතුර", + "keyboard_shortcuts.hotkey": "උණු යතුර", "keyboard_shortcuts.legend": "මෙම පුරාවෘත්තය ප්රදර්ශනය කිරීමට", "keyboard_shortcuts.local": "දේශීය කාලරේඛාව විවෘත කිරීමට", "keyboard_shortcuts.mention": "කතුවරයා සඳහන් කිරීමට", @@ -289,10 +290,10 @@ "lightbox.previous": "පෙර", "limited_account_hint.action": "කෙසේ හෝ පැතිකඩ පෙන්වන්න", "limited_account_hint.title": "මෙම පැතිකඩ ඔබගේ සේවාදායකයේ පරිපාලකයින් විසින් සඟවා ඇත.", - "lists.account.add": "ලැයිස්තුවට එකතු කරන්න", - "lists.account.remove": "ලැයිස්තුවෙන් ඉවත්", - "lists.delete": "ලැයිස්තුව මකන්න", - "lists.edit": "ලැයිස්තුව සංස්කරණය කරන්න", + "lists.account.add": "ලේඛනයට දමන්න", + "lists.account.remove": "ලේඛනයෙන් ඉවතලන්න", + "lists.delete": "ලේඛනය මකන්න", + "lists.edit": "ලේඛනය සංස්කරණය", "lists.edit.submit": "මාතෘකාව වෙනස් කරන්න", "lists.new.create": "ලැයිස්තුව එකතු කරන්න", "lists.new.title_placeholder": "නව ලැයිස්තු මාතෘකාව", @@ -301,37 +302,37 @@ "lists.replies_policy.none": "කිසිවෙක් නැත", "lists.replies_policy.title": "පිළිතුරු පෙන්වන්න:", "lists.search": "ඔබ අනුගමනය කරන පුද්ගලයින් අතර සොයන්න", - "lists.subheading": "ඔබේ ලැයිස්තු", + "lists.subheading": "ඔබගේ ලේඛන", "load_pending": "{count, plural, one {# නව අයිතමයක්} other {නව අයිතම #ක්}}", "loading_indicator.label": "පූරණය වෙමින්...", "media_gallery.toggle_visible": "{number, plural, one {රූපය සඟවන්න} other {පින්තූර සඟවන්න}}", - "missing_indicator.label": "හමු වුණේ නැහැ", - "missing_indicator.sublabel": "මෙම සම්පත සොයාගත නොහැකි විය", - "mute_modal.duration": "කාල සීමාව", + "missing_indicator.label": "හමු නොවිණි", + "missing_indicator.sublabel": "මෙම සම්පත හමු නොවිණි", + "mute_modal.duration": "පරාසය", "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?", "mute_modal.indefinite": "අවිනිශ්චිත", "navigation_bar.apps": "ජංගම යෙදුම්", - "navigation_bar.blocks": "අවහිර කළ පරිශීලකයින්", - "navigation_bar.bookmarks": "පොත් යොමු කරන්න", + "navigation_bar.blocks": "අවහිර කළ අය", + "navigation_bar.bookmarks": "පොත්යොමු", "navigation_bar.community_timeline": "දේශීය කාලරේඛාව", "navigation_bar.compose": "නව ටූට් සාදන්න", "navigation_bar.direct": "සෘජු පණිවිඩ", "navigation_bar.discover": "සොයා ගන්න", - "navigation_bar.domain_blocks": "සැඟවුණු වසම්", + "navigation_bar.domain_blocks": "අවහිර කළ වසම්", "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය", "navigation_bar.explore": "ගවේෂණය කරන්න", "navigation_bar.favourites": "ප්‍රියතමයන්", - "navigation_bar.filters": "සමඟ කළ වචන", - "navigation_bar.follow_requests": "ඉල්ලීම් අනුගමනය කරන්න", - "navigation_bar.follows_and_followers": "අනුගාමිකයින් සහ අනුගාමිකයින්", - "navigation_bar.info": "මෙම සේවාදායකය පිළිබඳව", - "navigation_bar.keyboard_shortcuts": "උණුසුම් යතුරු", - "navigation_bar.lists": "ලැයිස්තු", + "navigation_bar.filters": "නිහඬ කළ වචන", + "navigation_bar.follow_requests": "අනුගමන ඉල්ලීම්", + "navigation_bar.follows_and_followers": "අනුගමනය හා අනුගාමිකයින්", + "navigation_bar.info": "මෙම සේවාදායකය ගැන", + "navigation_bar.keyboard_shortcuts": "උණු යතුරු", + "navigation_bar.lists": "ලේඛන", "navigation_bar.logout": "නික්මෙන්න", - "navigation_bar.mutes": "නිශ්ශබ්ද පරිශීලකයන්", + "navigation_bar.mutes": "නිහඬ කළ අය", "navigation_bar.personal": "පුද්ගලික", - "navigation_bar.pins": "ඇලවූ දත්", - "navigation_bar.preferences": "මනාප", + "navigation_bar.pins": "ඇමිණූ ලිපි", + "navigation_bar.preferences": "අභිප්‍රේත", "navigation_bar.public_timeline": "ෆෙඩරේටඩ් කාලරේඛාව", "navigation_bar.security": "ආරක්ෂාව", "notification.admin.report": "{name} වාර්තා {target}", @@ -340,46 +341,46 @@ "notification.follow": "{name} ඔබව අනුගමනය කළා", "notification.follow_request": "{name} ඔබව අනුගමනය කිරීමට ඉල්ලා ඇත", "notification.mention": "{name} ඔබව සඳහන් කර ඇත", - "notification.own_poll": "ඔබේ මත විමසුම අවසන් වී ඇත", - "notification.poll": "ඔබ ඡන්දය දුන් මත විමසුමක් අවසන් වී ඇත", + "notification.own_poll": "ඔබගේ මත විමසුම නිමයි", + "notification.poll": "ඔබ ඡන්දය දුන් මත විමසුමක් නිමයි", "notification.reblog": "{name} ඔබේ තත්ත්වය ඉහළ නැංවීය", "notification.status": "{name} දැන් පළ කළා", "notification.update": "{name} පළ කිරීමක් සංස්කරණය කළා", - "notifications.clear": "දැනුම්දීම් හිස්කරන්න", + "notifications.clear": "දැනුම්දීම් මකන්න", "notifications.clear_confirmation": "ඔබට ඔබගේ සියලු දැනුම්දීම් ස්ථිරවම හිස් කිරීමට අවශ්‍ය බව විශ්වාසද?", "notifications.column_settings.admin.report": "නව වාර්තා:", - "notifications.column_settings.admin.sign_up": "නව ලියාපදිංචි කිරීම්:", - "notifications.column_settings.alert": "ඩෙස්ක්ටොප් දැනුම්දීම්", + "notifications.column_settings.admin.sign_up": "නව ලියාපදිංචි:", + "notifications.column_settings.alert": "වැඩතල දැනුම්දීම්", "notifications.column_settings.favourite": "ප්‍රියතමයන්:", - "notifications.column_settings.filter_bar.advanced": "සියලුම කාණ්ඩ පෙන්වන්න", + "notifications.column_settings.filter_bar.advanced": "සියළු ප්‍රවර්ග පෙන්වන්න", "notifications.column_settings.filter_bar.category": "ඉක්මන් පෙරහන් තීරුව", "notifications.column_settings.filter_bar.show_bar": "පෙරහන් තීරුව පෙන්වන්න", "notifications.column_settings.follow": "නව අනුගාමිකයින්:", - "notifications.column_settings.follow_request": "නව පහත ඉල්ලීම්:", + "notifications.column_settings.follow_request": "නව අනුගමන ඉල්ලීම්:", "notifications.column_settings.mention": "සැඳහුම්:", "notifications.column_settings.poll": "ඡන්ද ප්‍රතිඵල:", "notifications.column_settings.push": "තල්ලු දැනුම්දීම්", "notifications.column_settings.reblog": "තල්ලු කිරීම්:", "notifications.column_settings.show": "තීරුවෙහි පෙන්වන්න", - "notifications.column_settings.sound": "ශබ්දය සිදු කරන ලදී", - "notifications.column_settings.status": "නව දත්:", + "notifications.column_settings.sound": "ශබ්දය වාදනය", + "notifications.column_settings.status": "නව ලිපි:", "notifications.column_settings.unread_notifications.category": "නොකියවූ දැනුම්දීම්", "notifications.column_settings.unread_notifications.highlight": "නොකියවූ දැනුම්දීම් ඉස්මතු කරන්න", - "notifications.column_settings.update": "සංස්කරණ:", + "notifications.column_settings.update": "සංශෝධන:", "notifications.filter.all": "සියල්ල", "notifications.filter.boosts": "බූස්ට් කරයි", "notifications.filter.favourites": "ප්‍රියතමයන්", - "notifications.filter.follows": "පහත සඳහන්", + "notifications.filter.follows": "අනුගමනය", "notifications.filter.mentions": "සැඳහුම්", "notifications.filter.polls": "ඡන්ද ප්‍රතිඵල", "notifications.filter.statuses": "ඔබ අනුගමනය කරන පුද්ගලයින්ගෙන් යාවත්කාලීන", "notifications.grant_permission": "අවසර දෙන්න.", "notifications.group": "දැනුම්දීම් {count}", - "notifications.mark_as_read": "දැනුම්දීමක්ම කියවූ ලෙස සලකුණු කරන්න", + "notifications.mark_as_read": "සියළු දැනුම්දීම් කියවූ බව යොදන්න", "notifications.permission_denied": "කලින් ප්‍රතික්ෂේප කළ බ්‍රවුසර අවසර ඉල්ලීම හේතුවෙන් ඩෙස්ක්ටොප් දැනුම්දීම් නොමැත", "notifications.permission_denied_alert": "බ්‍රවුසර අවසරය පෙර ප්‍රතික්ෂේප කර ඇති බැවින්, ඩෙස්ක්ටොප් දැනුම්දීම් සබල කළ නොහැක", "notifications.permission_required": "අවශ්‍ය අවසරය ලබා දී නොමැති නිසා ඩෙස්ක්ටොප් දැනුම්දීම් නොමැත.", - "notifications_permission_banner.enable": "ඩෙස්ක්ටොප් දැනුම්දීම් සබල කරන්න", + "notifications_permission_banner.enable": "වැඩතල දැනුම්දීම් සබල කරන්න", "notifications_permission_banner.how_to_control": "Mastodon විවෘතව නොමැති විට දැනුම්දීම් ලබා ගැනීමට, ඩෙස්ක්ටොප් දැනුම්දීම් සබල කරන්න. ඔබට ඒවා සක්‍රිය කළ පසු ඉහත {icon} බොත්තම හරහා ඩෙස්ක්ටොප් දැනුම්දීම් ජනනය කරන්නේ කුමන ආකාරයේ අන්තර්ක්‍රියාද යන්න නිවැරදිව පාලනය කළ හැක.", "notifications_permission_banner.title": "කිසිම දෙයක් අතපසු කරන්න එපා", "picture_in_picture.restore": "ආපහු දාන්න", @@ -387,59 +388,59 @@ "poll.refresh": "නැවුම් කරන්න", "poll.total_people": "{count, plural, one {# පුද්ගලයා} other {# මහජන}}", "poll.total_votes": "{count, plural, one {# ඡන්දය} other {ඡන්ද #}}", - "poll.vote": "මනාපය", + "poll.vote": "ඡන්දය", "poll.voted": "ඔබ මෙම පිළිතුරට ඡන්දය දුන්නා", "poll.votes": "{votes, plural, one {# ඡන්දය} other {ඡන්ද #}}", - "poll_button.add_poll": "මත විමසුමක් එක් කරන්න", - "poll_button.remove_poll": "ඡන්ද විමසීම ඉවත් කරන්න", - "privacy.change": "තත්ත්‍වයේ පෞද්ගලිකත්වය සීරුමාරු කරන්න", - "privacy.direct.long": "සඳහන් කළ පරිශීලකයින් සඳහා පමණක් දෘශ්‍යමාන වේ", - "privacy.direct.short": "සඳහන් කළ පුද්ගලයන් පමණි", - "privacy.private.long": "අනුගාමිකයින් සඳහා පමණක් දෘශ්‍යමාන වේ", + "poll_button.add_poll": "මත විමසුමක් යොදන්න", + "poll_button.remove_poll": "මත විමසුම ඉවතලන්න", + "privacy.change": "ලිපියේ රහස්‍යතාව සංශෝධනය", + "privacy.direct.long": "සඳහන් කළ අයට දිස්වෙයි", + "privacy.direct.short": "සඳහන් කළ අයට පමණි", + "privacy.private.long": "අනුගාමිකයින්ට දිස්වේ", "privacy.private.short": "අනුගාමිකයින් පමණි", - "privacy.public.long": "සැමට දෘශ්‍යමානයි", - "privacy.public.short": "ප්රසිද්ධ", + "privacy.public.long": "සැමට දිස්වෙයි", + "privacy.public.short": "ප්‍රසිද්ධ", "privacy.unlisted.long": "සැමට දෘශ්‍යමාන, නමුත් සොයාගැනීමේ විශේෂාංග වලින් ඉවත් විය", "privacy.unlisted.short": "ලැයිස්තුගත නොකළ", "refresh": "නැවුම් කරන්න", "regeneration_indicator.label": "පූරණය වෙමින්…", "regeneration_indicator.sublabel": "ඔබේ නිවසේ පෝෂණය සූදානම් වෙමින් පවතී!", - "relative_time.days": "{number}d", + "relative_time.days": "ද. {number}", "relative_time.full.days": "{number, plural, one {# දින} other {# දින}} පෙර", - "relative_time.full.hours": "{number, plural, one {# පැය} other {# පැය}} පෙර", + "relative_time.full.hours": "{number, plural, one {පැය #} other {පැය #}} කට පෙර", "relative_time.full.just_now": "මේ දැන්", - "relative_time.full.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}} පෙර", - "relative_time.full.seconds": "{number, plural, one {# දෙවැනි} other {# තත්පර}} පෙර", + "relative_time.full.minutes": "{number, plural, one {විනාඩි #} other {විනාඩි #}} කට පෙර", + "relative_time.full.seconds": "{number, plural, one {තත්පර #} other {තත්පර #}} කට පෙර", "relative_time.hours": "පැය {number}", "relative_time.just_now": "දැන්", - "relative_time.minutes": "මීටර් {number}", - "relative_time.seconds": "{number}තත්", + "relative_time.minutes": "වි. {number}", + "relative_time.seconds": "තත්. {number}", "relative_time.today": "අද", "reply_indicator.cancel": "අවලංගු කරන්න", - "report.block": "අවහිර කරන්න", + "report.block": "අවහිර", "report.block_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට ඔබේ පළ කිරීම් බැලීමට හෝ ඔබව අනුගමනය කිරීමට නොහැකි වනු ඇත. ඔවුන් අවහිර කර ඇති බව ඔවුන්ට පැවසිය හැකිය.", "report.categories.other": "වෙනත්", - "report.categories.spam": "ආයාචිත තැපැල්", + "report.categories.spam": "ආයාචිත", "report.categories.violation": "අන්තර්ගතය සේවාදායක නීති එකක් හෝ කිහිපයක් උල්ලංඝනය කරයි", "report.category.subtitle": "හොඳම ගැලපීම තෝරන්න", "report.category.title": "මෙම {type}සමඟ සිදුවන්නේ කුමක්දැයි අපට කියන්න", "report.category.title_account": "පැතිකඩ", "report.category.title_status": "තැපැල්", - "report.close": "කළා", + "report.close": "අහවරයි", "report.comment.title": "අප දැනගත යුතු යැයි ඔබ සිතන තවත් යමක් තිබේද?", "report.forward": "{target}වෙත යොමු කරන්න", "report.forward_hint": "ගිණුම වෙනත් සේවාදායකයකින්. වාර්තාවේ නිර්නාමික පිටපතක් එතනටත් එවන්න?", - "report.mute": "නිහඬ කරන්න", + "report.mute": "නිහඬ", "report.mute_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට තවමත් ඔබව අනුගමනය කිරීමට සහ ඔබේ පළ කිරීම් දැකීමට හැකි අතර ඒවා නිශ්ශබ්ද කර ඇති බව නොදැනේ.", "report.next": "ඊළඟ", "report.placeholder": "අමතර අදහස්", - "report.reasons.dislike": "මම ඒකට කැමති නැහැ", + "report.reasons.dislike": "මම එයට අකැමතියි", "report.reasons.dislike_description": "ඒක බලන්න ඕන දෙයක් නෙවෙයි", "report.reasons.other": "ඒක වෙන දෙයක්", "report.reasons.other_description": "ගැටළුව වෙනත් වර්ග වලට නොගැලපේ", - "report.reasons.spam": "එය අයාචිත තැපැල් ය", + "report.reasons.spam": "එය අයාචිතයි", "report.reasons.spam_description": "අනිෂ්ට සබැඳි, ව්‍යාජ නියැලීම, හෝ පුනරාවර්තන පිළිතුරු", - "report.reasons.violation": "එය සේවාදායක නීති උල්ලංඝනය කරයි", + "report.reasons.violation": "එය සේවාදායකයේ නීති කඩ කරයි", "report.reasons.violation_description": "එය නිශ්චිත නීති කඩ කරන බව ඔබ දන්නවා", "report.rules.subtitle": "අදාළ සියල්ල තෝරන්න", "report.rules.title": "කුමන නීති උල්ලංඝනය කරන්නේද?", @@ -449,14 +450,14 @@ "report.target": "වාර්තාව {target}", "report.thanks.take_action": "Mastodon හි ඔබ දකින දේ පාලනය කිරීම සඳහා ඔබේ විකල්ප මෙන්න:", "report.thanks.take_action_actionable": "අපි මෙය සමාලෝචනය කරන අතරතුර, ඔබට @{name}ට එරෙහිව පියවර ගත හැක:", - "report.thanks.title": "මේක බලන්න ඕන නැද්ද?", + "report.thanks.title": "මෙය නොපෙන්විය යුතුද?", "report.thanks.title_actionable": "වාර්තා කිරීමට ස්තූතියි, අපි මේ ගැන සොයා බලමු.", "report.unfollow": "@{name}අනුගමනය නොකරන්න", "report.unfollow_explanation": "ඔබ මෙම ගිණුම අනුගමනය කරයි. ඔබේ නිවසේ සංග්‍රහයේ ඔවුන්ගේ පළ කිරීම් තවදුරටත් නොදැකීමට, ඒවා අනුගමනය නොකරන්න.", "report_notification.attached_statuses": "{count, plural, one {{count} තැපැල්} other {{count} තනතුරු}} අමුණා ඇත", "report_notification.categories.other": "වෙනත්", - "report_notification.categories.spam": "ආයාචිත තැපැල්", - "report_notification.categories.violation": "රීති උල්ලංඝනය කිරීම", + "report_notification.categories.spam": "ආයාචිත", + "report_notification.categories.violation": "නීතිය කඩ කිරීම", "report_notification.open": "විවෘත වාර්තාව", "search.placeholder": "සොයන්න", "search_popout.search_format": "උසස් සෙවුම් ආකෘතිය", @@ -466,63 +467,66 @@ "search_popout.tips.text": "සරල පෙළ ගැළපෙන සංදර්ශක නම්, පරිශීලක නාම සහ හැෂ් ටැග් ලබා දෙයි", "search_popout.tips.user": "පරිශීලක", "search_results.accounts": "මිනිසුන්", - "search_results.all": "සියලුම", + "search_results.all": "සියල්ල", "search_results.hashtags": "හැෂ් ටැග්", "search_results.nothing_found": "මෙම සෙවුම් පද සඳහා කිසිවක් සොයාගත නොහැකි විය", - "search_results.statuses": "ටූට්ස්", + "search_results.statuses": "ලිපි", "search_results.statuses_fts_disabled": "මෙම Mastodon සේවාදායකයේ ඒවායේ අන්තර්ගතය අනුව මෙවලම් සෙවීම සබල නොවේ.", "search_results.total": "{count, number} {count, plural, one {ප්රතිඵලය} other {ප්රතිපල}}", "status.admin_account": "@{name}සඳහා මධ්‍යස්ථ අතුරුමුහුණත විවෘත කරන්න", "status.admin_status": "මධ්‍යස්ථ අතුරුමුහුණතෙහි මෙම තත්ත්වය විවෘත කරන්න", - "status.block": "@{name} අවහිර කරන්න", - "status.bookmark": "පොත් යොමුව", + "status.block": "@{name} අවහිර", + "status.bookmark": "පොත්යොමුවක්", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "මෙම තනතුර වැඩි කළ නොහැක", "status.copy": "තත්වයට සබැඳිය පිටපත් කරන්න", "status.delete": "මකන්න", - "status.detailed_status": "සවිස්තරාත්මක සංවාද දසුන", - "status.direct": "@{name} සෘජු පණිවිඩය", - "status.edit": "සංස්කරණය කරන්න", - "status.edited": "සංස්කරණය {date}", - "status.edited_x_times": "සංස්කරණය කළා {count, plural, one {{count} කාලය} other {{count} වාර}}", - "status.embed": "එබ්බවූ", + "status.detailed_status": "විස්තරාත්මක සංවාද දැක්ම", + "status.direct": "@{name} සෘජු පණිවිඩයක්", + "status.edit": "සංස්කරණය", + "status.edited": "සංශෝධිතයි {date}", + "status.edited_x_times": "සංශෝධිතයි {count, plural, one {වාර {count}} other {වාර {count}}}", + "status.embed": "කාවැද්දූ", "status.favourite": "ප්‍රියතම", "status.filter": "Filter this post", "status.filtered": "පෙරන ලද", "status.hide": "Hide toot", "status.history.created": "{name} නිර්මාණය {date}", "status.history.edited": "{name} සංස්කරණය {date}", - "status.load_more": "තව පූරණය කරන්න", - "status.media_hidden": "මාධ්‍ය සංගුවා ඇත", + "status.load_more": "තව පූරණය", + "status.media_hidden": "මාධ්‍ය සඟවා ඇත", "status.mention": "@{name} සැඳහුම", "status.more": "තව", - "status.mute": "@{name} කරන්න", - "status.mute_conversation": "සංවාදයෙන් කරන්න", - "status.open": "මෙම තත්ත්වය පුළුල් කරන්න", - "status.pin": "පැතිකඩ මත අමුණන්න", - "status.pinned": "පින් කළ දත", + "status.mute": "@{name} නිහඬව", + "status.mute_conversation": "සංවාදය නිහඬව", + "status.open": "මෙම ලිපිය විහිදන්න", + "status.pin": "පැතිකඩට අමුණන්න", + "status.pinned": "ඇමිණූ ලිපියකි", "status.read_more": "තව කියවන්න", "status.reblog": "බූස්ට් කරන්න", "status.reblog_private": "මුල් දෘශ්‍යතාව සමඟ වැඩි කරන්න", "status.reblogged_by": "{name} වැඩි කරන ලදී", "status.reblogs.empty": "තාම කවුරුත් මේ toot එක boost කරලා නැහැ. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.", "status.redraft": "මකන්න සහ නැවත කෙටුම්පත", - "status.remove_bookmark": "පොත්යොමුව ඉවත් කරන්න", + "status.remove_bookmark": "පොත්යොමුව ඉවතලන්න", "status.reply": "පිළිතුරු", "status.replyAll": "ත්‍රෙඩ් එකට පිළිතුරු දෙන්න", - "status.report": "@{name} වාර්තා කරන්න", + "status.report": "@{name} වාර්තාව", "status.sensitive_warning": "සංවේදී අන්තර්ගතයකි", "status.share": "බෙදාගන්න", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "කෙසේ වුවද පෙන්වන්න", "status.show_less": "අඩුවෙන් පෙන්වන්න", - "status.show_less_all": "සියල්ලටම අඩුවෙන් පෙන්වන්න", - "status.show_more": "තව පෙන්වන්න", - "status.show_more_all": "සියල්ල සඳහා තවත් පෙන්වන්න", + "status.show_less_all": "සියල්ල අඩුවෙන් පෙන්වන්න", + "status.show_more": "තවත් පෙන්වන්න", + "status.show_more_all": "සියල්ල වැඩියෙන් පෙන්වන්න", "status.show_thread": "නූල් පෙන්වන්න", - "status.uncached_media_warning": "ලද නොහැක", - "status.unmute_conversation": "සංවාදය නිහඬ නොකරන්න", - "status.unpin": "පැතිකඩෙන් ඉවත් කරන්න", - "suggestions.dismiss": "යෝජනාව ඉවත ලන්න", + "status.uncached_media_warning": "නොතිබේ", + "status.unmute_conversation": "සංවාදය නොනිහඬ", + "status.unpin": "පැතිකඩෙන් ගළවන්න", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", + "suggestions.dismiss": "යෝජනාව ඉවතලන්න", "suggestions.header": "ඔබ…ගැන උනන්දු විය හැකිය", "tabs_bar.federated_timeline": "ෆෙඩරල්", "tabs_bar.home": "මුල් පිටුව", @@ -536,19 +540,19 @@ "time_remaining.seconds": "{number, plural, one {# දෙවැනි} other {# තත්පර}} අත්හැරියා", "timeline_hint.remote_resource_not_displayed": "වෙනත් සේවාදායකයන්ගෙන් {resource} දර්ශනය නොවේ.", "timeline_hint.resources.followers": "අනුගාමිකයින්", - "timeline_hint.resources.follows": "පහත සඳහන්", - "timeline_hint.resources.statuses": "පැරණි දත්", + "timeline_hint.resources.follows": "අනුගමනය", + "timeline_hint.resources.statuses": "පරණ ලිපි", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "දැන් ප්‍රවණතාවය", "ui.beforeunload": "ඔබ Mastodon හැර ගියහොත් ඔබේ කෙටුම්පත නැති වනු ඇත.", "units.short.billion": "{count}බී", "units.short.million": "{count}එම්", "units.short.thousand": "{count}කි", - "upload_area.title": "උඩුගත කිරීමට ඇද දමන්න", - "upload_button.label": "පින්තූර, වීඩියෝවක් හෝ ශ්‍රව්‍ය ගොනුවක් එක් කරන්න", - "upload_error.limit": "ගොනුව උඩුගත කළ හැකි සීමාවන් ඇත.", - "upload_error.poll": "ඡන්ද විමසීම් සමඟ ගොනු උඩුගත කිරීමට අවසර නැත.", - "upload_form.audio_description": "ශ්‍රවණාබාධ ඇති පුද්ගලයන් සඳහා විස්තර කරන්න", + "upload_area.title": "උඩුගතයට ඇද දමන්න", + "upload_button.label": "රූප, දෘශ්‍යක හෝ හඬපට යොදන්න", + "upload_error.limit": "සීමාව ඉක්මවා ඇත.", + "upload_error.poll": "මත විමසුම් සමඟ ගොනු යෙදීමට ඉඩ නොදේ.", + "upload_form.audio_description": "නොඇසෙන අය සඳහා විස්තර කරන්න", "upload_form.description": "දෘශ්‍යාබාධිතයන් සඳහා විස්තර කරන්න", "upload_form.description_missing": "විස්තරයක් එක් කර නැත", "upload_form.edit": "සංස්කරණය", @@ -557,23 +561,23 @@ "upload_form.video_description": "ශ්‍රවණාබාධ හෝ දෘශ්‍යාබාධිත පුද්ගලයන් සඳහා විස්තර කරන්න", "upload_modal.analyzing_picture": "පින්තූරය විශ්ලේෂණය කරමින්…", "upload_modal.apply": "යොදන්න", - "upload_modal.applying": "…යෙදීම", - "upload_modal.choose_image": "පින්තුරයක් තෝරාගන්න", - "upload_modal.description_placeholder": "කඩිසර හා හිවලෙක් කම්මැලි බල්ලා මතින් පනී", - "upload_modal.detect_text": "පින්තූරයෙන් හඳුනාගන්න", + "upload_modal.applying": "යොදමින්…", + "upload_modal.choose_image": "රූපයක් තෝරන්න", + "upload_modal.description_placeholder": "කඩිසර දුඹුරු හිවලෙක් කම්මැලි බල්ලා මතින් පනී", + "upload_modal.detect_text": "රූපයෙහි පෙළ අනාවරණය", "upload_modal.edit_media": "මාධ්‍ය සංස්කරණය", "upload_modal.hint": "සියලුම සිඟිති රූ මත සැම විටම දර්ශනය වන නාභි ලක්ෂ්‍යය තේරීමට පෙරදසුනෙහි රවුම ක්ලික් කරන්න හෝ අදින්න.", "upload_modal.preparing_ocr": "OCR…සූදානම් කරමින්", "upload_modal.preview_label": "පෙරදසුන ({ratio})", "upload_progress.label": "උඩුගත වෙමින්...", - "video.close": "දෘශ්‍යයක් වසන්න", + "video.close": "දෘශ්‍යකය වසන්න", "video.download": "ගොනුව බාගන්න", "video.exit_fullscreen": "පූර්ණ තිරයෙන් පිටවන්න", - "video.expand": "වීඩියෝව දිග හරින්න", + "video.expand": "දෘශ්‍යකය විහිදන්න", "video.fullscreen": "පූර්ණ තිරය", - "video.hide": "දෘශ්‍ය‍ය සඟවන්න", - "video.mute": "ශබ්දය නිශ්ශබ්ද කරන්න", + "video.hide": "දෘශ්‍යකය සඟවන්න", + "video.mute": "ශබ්දය නිහඬ", "video.pause": "විරාමය", "video.play": "ධාවනය", - "video.unmute": "ශබ්දය නිශ්ශබ්ද කරන්න" + "video.unmute": "ශබ්දය නොනිහඬ" } diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 128858646..629c93ca9 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -24,6 +24,7 @@ "account.follows_you": "Nasleduje ťa", "account.hide_reblogs": "Skry vyzdvihnutia od @{name}", "account.joined": "Pridal/a sa v {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}", "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.", "account.media": "Médiá", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nedostupný/é", "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Zavrhni návrh", "suggestions.header": "Mohlo by ťa zaujímať…", "tabs_bar.federated_timeline": "Federovaná", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 89894acf8..1f1f0370f 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -24,6 +24,7 @@ "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij izpostavitve od @{name}", "account.joined": "Pridružen/a {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", "account.media": "Mediji", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Zavrni predlog", "suggestions.header": "Morda bi vas zanimalo…", "tabs_bar.federated_timeline": "Združeno", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 0b7fabb45..0a485aaae 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -24,6 +24,7 @@ "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", "account.joined": "U bë pjesë më {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", "account.media": "Media", @@ -197,22 +198,22 @@ "explore.trending_links": "Lajme", "explore.trending_statuses": "Postime", "explore.trending_tags": "Hashtagë", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Kjo kategori filtrash nuk aplikohet për kontekstin nën të cilin po merreni me këtë postim. Nëse doni që postimi të filtrohet edhe në këtë kontekst, do t’ju duhet të përpunoni filtrin.", + "filter_modal.added.context_mismatch_title": "Mospërputhje kontekstesh!", + "filter_modal.added.expired_explanation": "Kjo kategori filtrash ka skaduar, do t’ju duhet të ndryshoni datën e skadimit për të, pa të aplikohet.", + "filter_modal.added.expired_title": "Filtër i skaduar!", + "filter_modal.added.review_and_configure": "Që të shqyrtoni dhe formësoni më tej këtë kategori filtrash, kaloni te {settings_link}.", + "filter_modal.added.review_and_configure_title": "Rregullime filtrash", + "filter_modal.added.settings_link": "faqe rregullimesh", + "filter_modal.added.short_explanation": "Ky postim është shtuar te kategoria vijuese e filtrave: {title}.", + "filter_modal.added.title": "U shtua filtër!", + "filter_modal.select_filter.context_mismatch": "mos e apliko mbi këtë kontekst", + "filter_modal.select_filter.expired": "ka skaduar", + "filter_modal.select_filter.prompt_new": "Kategori e re: {name}", + "filter_modal.select_filter.search": "Kërkoni, ose krijoni", + "filter_modal.select_filter.subtitle": "Përdorni një kategori ekzistuese, ose krijoni një të re", + "filter_modal.select_filter.title": "Filtroje këtë postim", + "filter_modal.title.status": "Filtroni një postim", "follow_recommendations.done": "U bë", "follow_recommendations.heading": "Ndiqni persona prej të cilëve doni të shihni postime! Ja ca sugjerime.", "follow_recommendations.lead": "Postimet prej personash që ndiqni do të shfaqen në rend kohor te prurja juaj kryesore. Mos kini frikë të bëni gabime, mund të ndalni po aq kollaj ndjekjen e dikujt, në çfarëdo kohe!", @@ -487,7 +488,7 @@ "status.edited_x_times": "Përpunuar {count, plural, one {{count} herë} other {{count} herë}}", "status.embed": "Trupëzim", "status.favourite": "I parapëlqyer", - "status.filter": "Filter this post", + "status.filter": "Filtroje këtë postim", "status.filtered": "I filtruar", "status.hide": "Fshihe mesazhin", "status.history.created": "{name} u krijua më {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Mos e merr parasysh sugjerimin", "suggestions.header": "Mund t’ju interesonte…", "tabs_bar.federated_timeline": "E federuar", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 8e955727d..2487c27f9 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -24,6 +24,7 @@ "account.follows_you": "Prati Vas", "account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Mediji", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Uključi prepisku", "status.unpin": "Otkači sa profila", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federisano", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 442e7ee3d..9683cafff 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -24,6 +24,7 @@ "account.follows_you": "Прати Вас", "account.hide_reblogs": "Сакриј подршке које даје корисника @{name}", "account.joined": "Придружио/ла се {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Власништво над овом везом је проверено {date}", "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.", "account.media": "Медији", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Није доступно", "status.unmute_conversation": "Укључи преписку", "status.unpin": "Откачи са налога", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Федерисано", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index a150deadb..c9ae1b08c 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -24,6 +24,7 @@ "account.follows_you": "Följer dig", "account.hide_reblogs": "Dölj knuffar från @{name}", "account.joined": "Gick med {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ej tillgängligt", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Avfärda förslag", "suggestions.header": "Du kanske är intresserad av…", "tabs_bar.federated_timeline": "Federerad", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index c77444bff..bde5388c6 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 6c9529a32..1d4531d89 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -24,6 +24,7 @@ "account.follows_you": "உங்களைப் பின்தொடர்கிறார்", "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}", "account.joined": "சேர்ந்த நாள் {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}", "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.", "account.media": "ஊடகங்கள்", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "கிடைக்கவில்லை", "status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை", "status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "பரிந்துரை விலக்க", "suggestions.header": "நீங்கள் ஆர்வமாக இருக்கலாம் …", "tabs_bar.federated_timeline": "கூட்டமைந்த", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index beba8e333..1e5f0ed34 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Mûi-thé", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index d5cc02b10..265a3b484 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -24,6 +24,7 @@ "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు", "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది", "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.", "account.media": "మీడియా", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "సూచనను రద్దు చేయి", "suggestions.header": "మీకు వీటి మీద ఆసక్తి ఉండవచ్చు…", "tabs_bar.federated_timeline": "సమాఖ్య", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 9fcb877d3..1c25ac049 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -24,6 +24,7 @@ "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", "account.joined": "เข้าร่วมเมื่อ {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", "account.media": "สื่อ", @@ -199,12 +200,12 @@ "explore.trending_tags": "แฮชแท็ก", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "บริบทไม่ตรงกัน!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.expired_explanation": "หมวดหมู่ตัวกรองนี้หมดอายุแล้ว คุณจะต้องเปลี่ยนวันหมดอายุสำหรับหมวดหมู่เพื่อนำไปใช้", + "filter_modal.added.expired_title": "ตัวกรองหมดอายุแล้ว!", + "filter_modal.added.review_and_configure": "เพื่อตรวจทานและกำหนดค่าหมวดหมู่ตัวกรองนี้เพิ่มเติม ไปยัง {settings_link}", "filter_modal.added.review_and_configure_title": "การตั้งค่าตัวกรอง", "filter_modal.added.settings_link": "หน้าการตั้งค่า", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.short_explanation": "เพิ่มโพสต์นี้ไปยังหมวดหมู่ตัวกรองดังต่อไปนี้แล้ว: {title}", "filter_modal.added.title": "เพิ่มตัวกรองแล้ว!", "filter_modal.select_filter.context_mismatch": "ไม่นำไปใช้กับบริบทนี้", "filter_modal.select_filter.expired": "หมดอายุแล้ว", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "ไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", "status.unpin": "ถอนหมุดจากโปรไฟล์", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "ปิดข้อเสนอแนะ", "suggestions.header": "คุณอาจสนใจ…", "tabs_bar.federated_timeline": "ที่ติดต่อกับภายนอก", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index bb67ef2f6..0d8b0e46f 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -24,6 +24,7 @@ "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined": "{date} tarihinde katıldı", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Öneriyi görmezden gel", "suggestions.header": "Şuna ilgi duyuyor olabilirsiniz…", "tabs_bar.federated_timeline": "Federe", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index c2739e181..71e68e3c4 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -24,6 +24,7 @@ "account.follows_you": "Сезгә язылган", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "{date} көнендә теркәлде", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Бу - ябык аккаунт. Аны язылучылар гына күрә ала.", "account.media": "Медиа", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index c77444bff..bde5388c6 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index a14e2125b..271a6f330 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -24,6 +24,7 @@ "account.follows_you": "Підписані на вас", "account.hide_reblogs": "Сховати поширення від @{name}", "account.joined": "Долучилися {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Відхилити пропозицію", "suggestions.header": "Вас може зацікавити…", "tabs_bar.federated_timeline": "Глобальна", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 19cee9c2a..a9ee2e877 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -24,6 +24,7 @@ "account.follows_you": "آپ کا پیروکار ہے", "account.hide_reblogs": "@{name} سے فروغ چھپائیں", "account.joined": "{date} شامل ہوئے", + "account.languages": "Change subscribed languages", "account.link_verified_on": "اس لنک کی ملکیت کی توثیق {date} پر کی گئی تھی", "account.locked_info": "اس اکاونٹ کا اخفائی ضابطہ مقفل ہے۔ صارف کی پیروی کون کر سکتا ہے اس کا جائزہ وہ خود لیتا ہے.", "account.media": "وسائل", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index d1b5684af..ff2ba7e85 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -24,6 +24,7 @@ "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.joined": "Đã tham gia {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Tắt đề xuất", "suggestions.header": "Có thể bạn quan tâm…", "tabs_bar.federated_timeline": "Thế giới", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 92201375d..4983489ab 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -24,6 +24,7 @@ "account.follows_you": "ⴹⴼⵕⵏ ⴽⵯⵏ", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "ⴰⵙⵏⵖⵎⵉⵙ", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 5d0dfa202..243d127f4 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -24,6 +24,7 @@ "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined": "加入于 {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "此链接的所有权已在 {date} 检查", "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", "account.media": "媒体", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "关闭建议", "suggestions.header": "你可能会感兴趣…", "tabs_bar.federated_timeline": "跨站", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index fdc206800..3b2dde692 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -24,6 +24,7 @@ "account.follows_you": "關注你", "account.hide_reblogs": "隱藏 @{name} 的轉推", "account.joined": "於 {date} 加入", + "account.languages": "Change subscribed languages", "account.link_verified_on": "此連結的所有權已在 {date} 檢查過", "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。", "account.media": "媒體", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "對話解除靜音", "status.unpin": "解除置頂", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "關閉建議", "suggestions.header": "你可能對這些感興趣…", "tabs_bar.federated_timeline": "跨站", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 337cad60b..62facfca2 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -24,6 +24,7 @@ "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", "account.joined": "加入於 {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", "account.media": "媒體", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "從個人檔案頁面解除釘選", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "關閉建議", "suggestions.header": "您可能對這些東西有興趣…", "tabs_bar.federated_timeline": "聯邦宇宙", diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index d306fe627..50c4fc8c3 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -38,3 +38,5 @@ cs: email: blocked: používá zakázanou e-mailovou službu unreachable: pravděpodobně neexistuje + role_id: + elevated: nemůže být vyšší než vaše aktuální role diff --git a/config/locales/cs.yml b/config/locales/cs.yml index b0ab498ea..4478d2420 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -165,6 +165,7 @@ cs: active: Aktivní all: Vše pending: Čekající + silenced: Omezeno suspended: Pozastavené title: Moderování moderation_notes: Moderátorské poznámky @@ -172,6 +173,7 @@ cs: most_recent_ip: Nejnovější IP adresa no_account_selected: Nebyl změněn žádný účet, neboť žádný nebyl zvolen no_limits_imposed: Nejsou nastavena žádná omezení + no_role_assigned: Nebyla přiřazena žádná role not_subscribed: Neodebírá pending: Čeká na posouzení perform_full_suspension: Pozastavit @@ -243,6 +245,7 @@ cs: approve_user: Schválit uživatele assigned_to_self_report: Přiřadit hlášení change_email_user: Změnit uživateli e-mailovou adresu + change_role_user: Změnit roli uživatele confirm_user: Potvrdit uživatele create_account_warning: Vytvořit varování create_announcement: Nové oznámení @@ -252,6 +255,7 @@ cs: create_email_domain_block: Zablokovat e-mailovou doménu create_ip_block: Vytvořit IP pravidlo create_unavailable_domain: Vytvořit nedostupnou doménu + create_user_role: Vytvořit roli demote_user: Snížit roli uživatele destroy_announcement: Odstranit oznámení destroy_custom_emoji: Odstranit vlastní emoji @@ -262,6 +266,7 @@ cs: destroy_ip_block: Smazat IP pravidlo destroy_status: Odstranit Příspěvek destroy_unavailable_domain: Smazat nedostupnou doménu + destroy_user_role: Zničit roli disable_2fa_user: Vypnout 2FA disable_custom_emoji: Zakázat vlastní emoji disable_sign_in_token_auth_user: Zrušit uživatelovo ověřování e-mailovým tokenem @@ -288,15 +293,19 @@ cs: update_announcement: Aktualizovat oznámení update_custom_emoji: Aktualizovat vlastní emoji update_domain_block: Změnit blokaci domény + update_ip_block: Aktualizovat pravidlo IP update_status: Aktualizovat Příspěvek + update_user_role: Aktualizovat roli actions: approve_appeal_html: Uživatel %{name} schválil odvolání proti rozhodnutí moderátora %{target} approve_user_html: "%{name} schválil registraci od %{target}" assigned_to_self_report_html: Uživatel %{name} si přidělil hlášení %{target} change_email_user_html: Uživatel %{name} změnil e-mailovou adresu uživatele %{target} + change_role_user_html: "%{name} změnil roli %{target}" confirm_user_html: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target} create_account_warning_html: Uživatel %{name} poslal %{target} varování create_announcement_html: Uživatel %{name} vytvořil nové oznámení %{target} + create_canonical_email_block_html: "%{name} zablokoval e-mail s hash %{target}" create_custom_emoji_html: Uživatel %{name} nahrál nové emoji %{target} create_domain_allow_html: Uživatel %{name} povolil federaci s doménou %{target} create_domain_block_html: Uživatel %{name} zablokoval doménu %{target} @@ -711,12 +720,16 @@ cs: manage_roles: Spravovat role manage_rules: Spravovat pravidla manage_settings: Spravovat nastavení + manage_taxonomies: Správa taxonomií manage_user_access: Spravovat uživatelské přístupy manage_user_access_description: Umožňuje uživatelům rušit jiným uživatelům dvoufázové ověřování, měnit jejich e-mailovou adresu a obnovovat jim hesla manage_users: Spravovat uživatele manage_webhooks: Spravovat webhooky view_audit_log: Zobrazovat protokol auditu + view_dashboard: Zobrazit ovládací panel + view_dashboard_description: Umožňuje uživatelům přístup k ovládacímu panelu a různým metrikám view_devops: Devops + view_devops_description: Umožňuje uživatelům přístup k ovládacím panelům Sidekiq a pgHero title: Role rules: add_new: Přidat pravidlo @@ -802,6 +815,9 @@ cs: desc_html: Zobrazit na hlavní stránce odkaz na veřejnou časovou osu a povolit přístup na veřejnou časovou osu pomocí API bez autentizace title: Povolit neautentizovaný přístup k časové ose title: Nastavení stránky + trendable_by_default: + desc_html: Specifický populární obsah může být i nadále výslovně zakázán + title: Povolit trendy bez předchozí revize trends: desc_html: Veřejně zobrazit dříve schválený obsah, který je zrovna populární title: Trendy @@ -1194,6 +1210,7 @@ cs: edit: add_keyword: Přidat klíčové slovo keywords: Klíčová slova + statuses: Individuální příspěvky title: Upravit filtr errors: deprecated_api_multiple_keywords: Tyto parametry nelze změnit z této aplikace, protože se vztahují na více než jedno klíčové slovo filtru. Použijte novější aplikaci nebo webové rozhraní. @@ -1213,6 +1230,12 @@ cs: new: save: Uložit nový filtr title: Přidat nový filtr + statuses: + back_to_filter: Zpět na filtr + batch: + remove: Odstranit z filtru + index: + title: Filtrované příspěvky footer: developers: Vývojáři more: Více… @@ -1223,6 +1246,7 @@ cs: changes_saved_msg: Změny byly úspěšně uloženy! copy: Kopírovat delete: Smazat + deselect: Zrušit výběr všeho none: Žádné order_by: Seřadit podle save_changes: Uložit změny diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 4f387128c..31e10c6fa 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -239,6 +239,7 @@ es-MX: confirm_user: Confirmar Usuario create_account_warning: Crear Advertencia create_announcement: Crear Anuncio + create_canonical_email_block: Crear Bloqueo de Correo Electrónico create_custom_emoji: Crear Emoji Personalizado create_domain_allow: Crear Permiso de Dominio create_domain_block: Crear Bloqueo de Dominio @@ -248,6 +249,7 @@ es-MX: create_user_role: Crear Rol demote_user: Degradar Usuario destroy_announcement: Eliminar Anuncio + destroy_canonical_email_block: Eliminar Bloqueo de Correo Electrónico destroy_custom_emoji: Eliminar Emoji Personalizado destroy_domain_allow: Eliminar Permiso de Dominio destroy_domain_block: Eliminar Bloqueo de Dominio @@ -283,6 +285,7 @@ es-MX: update_announcement: Actualizar Anuncio update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio + update_ip_block: Actualizar regla IP update_status: Actualizar Estado update_user_role: Actualizar Rol actions: @@ -294,6 +297,7 @@ es-MX: confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} ha creado un nuevo anuncio %{target}" + create_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{target}" create_custom_emoji_html: "%{name} subió un nuevo emoji %{target}" create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}" create_domain_block_html: "%{name} bloqueó el dominio %{target}" @@ -303,6 +307,7 @@ es-MX: create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}" destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" @@ -338,6 +343,7 @@ es-MX: update_announcement_html: "%{name} actualizó el anuncio %{target}" update_custom_emoji_html: "%{name} actualizó el emoji %{target}" update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}" + update_ip_block_html: "%{name} cambió la regla para la IP %{target}" update_status_html: "%{name} actualizó el estado de %{target}" update_user_role_html: "%{name} cambió el rol %{target}" empty: No se encontraron registros. @@ -801,6 +807,9 @@ es-MX: desc_html: Mostrar línea de tiempo pública en la portada title: Previsualización title: Ajustes del sitio + trendable_by_default: + desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado + title: Permitir tendencias sin revisión previa trends: desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia title: Hashtags de tendencia @@ -1720,7 +1729,7 @@ es-MX: change_password: cambies tu contraseña details: 'Aquí están los detalles del inicio de sesión:' explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP. - further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. + further_actions_html: Si no fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. subject: Tu cuenta ha sido accedida desde una nueva dirección IP title: Un nuevo inicio de sesión warning: diff --git a/config/locales/es.yml b/config/locales/es.yml index db4785d2c..8d9c2bbb3 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1729,7 +1729,7 @@ es: change_password: cambies tu contraseña details: 'Aquí están los detalles del inicio de sesión:' explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP. - further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. + further_actions_html: Si no fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. subject: Tu cuenta ha sido accedida desde una nueva dirección IP title: Un nuevo inicio de sesión warning: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 086568664..4dabcf789 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -212,6 +212,7 @@ nl: suspension_reversible_hint_html: Dit account is opgeschort en de gegevens worden volledig verwijderd op %{date}. Tot die tijd kan dit account worden hersteld zonder nadelige gevolgen. Wanneer je alle gegevens van dit account onmiddellijk wilt verwijderen, kun je dit hieronder doen. title: Accounts unblock_email: E-mailadres deblokkeren + unblocked_email_msg: Het e-mailadres van %{username} is gedeblokkeerd unconfirmed_email: Onbevestigd e-mailadres undo_sensitized: Niet meer als gevoelig forceren undo_silenced: Niet langer beperken @@ -230,6 +231,7 @@ nl: approve_user: Gebruiker goedkeuren assigned_to_self_report: Rapportage toewijzen change_email_user: E-mailadres van gebruiker wijzigen + change_role_user: Wijzig rol van gebruiker confirm_user: Gebruiker bevestigen create_account_warning: Waarschuwing aanmaken create_announcement: Mededeling aanmaken @@ -241,6 +243,7 @@ nl: create_unavailable_domain: Niet beschikbaar domein aanmaken demote_user: Gebruiker degraderen destroy_announcement: Mededeling verwijderen + destroy_canonical_email_block: Verwijder e-mailblokkade destroy_custom_emoji: Lokale emoji verwijderen destroy_domain_allow: Domeingoedkeuring verwijderen destroy_domain_block: Domeinblokkade verwijderen @@ -381,6 +384,15 @@ nl: pending_appeals_html: one: "%{count} bezwaar te beoordelen" other: "%{count} bezwaren te beoordelen" + pending_reports_html: + one: "%{count} openstaande rapportage" + other: "%{count} openstaande rapportages" + pending_tags_html: + one: "%{count} hashtag te beoordelen" + other: "%{count} hashtags te beoordelen" + pending_users_html: + one: "%{count} nieuwe gebruiker te beoordelen" + other: "%{count} nieuwe gebruikers te beoordelen" resolved_reports: opgeloste rapportages software: Software sources: Locatie van registratie @@ -485,6 +497,9 @@ nl: delivery_error_days: Dagen met bezorgfouten delivery_error_hint: Wanneer de bezorging voor %{count} dagen niet mogelijk is, wordt de bezorging automatisch als niet beschikbaar gemarkeerd. empty: Geen domeinen gevonden. + known_accounts: + one: "%{count} bekend account" + other: "%{count} bekende accounts" moderation: all: Alles limited: Beperkt @@ -575,7 +590,9 @@ nl: reported_by: Gerapporteerd door resolved: Opgelost resolved_msg: Rapportage succesvol opgelost! + skip_to_actions: Ga direct naar de acties status: Rapportages + statuses: Gerapporteerde inhoud target_origin: Herkomst van de gerapporteerde accounts title: Rapportages unassign: Niet langer toewijzen @@ -584,6 +601,38 @@ nl: view_profile: Profiel bekijken roles: add_new: Rol toevoegen + assigned_users: + one: "%{count} gebruiker" + other: "%{count} gebruikers" + categories: + administration: Beheer + devops: Devops + invites: Uitnodigingen + moderation: Moderatie + special: Speciaal + delete: Verwijderen + privileges: + administrator: Beheerder + delete_user_data: Gebruikersgegevens verwijderen + invite_users: Gebruikers uitnodigen + manage_announcements: Aankondigingen beheren + manage_appeals: Bezwaren afhandelen + manage_blocks: Blokkades beheren + manage_custom_emojis: Lokale emoji's beheren + manage_federation: Federatie beheren + manage_invites: Uitnodigingen beheren + manage_reports: Rapportages afhandelen + manage_roles: Rollen beheren + manage_rules: Serverregels wijzigen + manage_settings: Server-instellingen wijzigen + manage_taxonomies: Trends en hashtags beheren + manage_user_access: Gebruikerstoegang beheren + manage_users: Gebruikers beheren + manage_webhooks: Webhooks beheren + view_audit_log: Auditlog bekijken + view_dashboard: Dashboard bekijken + view_devops: Devops + title: Rollen rules: add_new: Regel toevoegen delete: Verwijderen @@ -668,6 +717,8 @@ nl: desc_html: Toon een link naar de openbare tijdlijnpagina op de voorpagina en geef de API zonder in te loggen toegang tot de openbare tijdlijn title: Toegang tot de openbare tijdlijn zonder in te loggen toestaan title: Server-instellingen + trendable_by_default: + title: Trends toestaan zonder voorafgaande beoordeling trends: desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen title: Trends @@ -685,6 +736,9 @@ nl: title: Berichten van account with_media: Met media strikes: + actions: + silence: "%{name} beperkte het account %{target}" + suspend: "%{name} schortte het account %{target} op" appeal_approved: Bezwaar ingediend appeal_pending: Bezwaar in behandeling system_checks: @@ -701,18 +755,32 @@ nl: title: Beheer trends: allow: Toestaan + approved: Toegestaan disallow: Weigeren links: allow: Link toestaan allow_provider: Uitgever toestaan + disallow: Link toestaan + disallow_provider: Website toestaan title: Trending links only_allowed: Alleen toegestaan pending_review: In afwachting van beoordeling preview_card_providers: + allowed: Links van deze website kunnen trending worden + rejected: Links van deze website kunnen niet trending worden title: Uitgevers rejected: Afgewezen statuses: allow: Bericht toestaan + allow_account: Gebruiker toestaan + disallow: Bericht niet toestaan + disallow_account: Gebruiker niet toestaan + not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn + title: Trending berichten + tags: + dashboard: + tag_languages_dimension: Populaire talen + tag_servers_dimension: Populaire servers warning_presets: add_new: Nieuwe toevoegen delete: Verwijderen @@ -789,6 +857,7 @@ nl: invalid_reset_password_token: De code om jouw wachtwoord opnieuw in te stellen is verlopen. Vraag een nieuwe aan. link_to_otp: Voer een tweestapsverificatiecode van je telefoon of een herstelcode in link_to_webauth: Jouw apparaat met de authenticatie-app gebruiken + log_in_with: Inloggen met login: Inloggen logout: Uitloggen migrate_account: Naar een ander account verhuizen @@ -810,6 +879,7 @@ nl: status: account_status: Accountstatus confirming: Aan het wachten totdat de e-mail is bevestigd. + functional: Jouw account kan in diens geheel gebruikt worden. pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd. redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}. too_fast: Formulier is te snel ingediend. Probeer het nogmaals. @@ -947,6 +1017,7 @@ nl: edit: add_keyword: Trefwoord toevoegen keywords: Trefwoorden + statuses: Individuele berichten title: Filter bewerken errors: deprecated_api_multiple_keywords: Deze instellingen kunnen niet via deze applicatie worden veranderd, omdat er meer dan één trefwoord wordt gebruikt. Gebruik een meer recente applicatie of de webomgeving. @@ -960,10 +1031,22 @@ nl: keywords: one: "%{count} trefwoord" other: "%{count} trefwoorden" + statuses: + one: "%{count} bericht" + other: "%{count} berichten" + statuses_long: + one: "%{count} individueel bericht verborgen" + other: "%{count} individuele berichten verborgen" title: Filters new: save: Nieuwe filter opslaan title: Nieuw filter toevoegen + statuses: + back_to_filter: Terug naar het filter + batch: + remove: Uit het filter verwijderen + index: + title: Gefilterde berichten footer: developers: Ontwikkelaars more: Meer… @@ -974,6 +1057,7 @@ nl: changes_saved_msg: Wijzigingen succesvol opgeslagen! copy: Kopiëren delete: Verwijderen + deselect: Alles deselecteren none: Geen order_by: Sorteer op save_changes: Wijzigingen opslaan @@ -1302,6 +1386,11 @@ nl: unlisted: Minder openbaar unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen statuses_cleanup: + ignore_favs: Favorieten negeren + ignore_reblogs: Boosts negeren + keep_direct: Directe berichten behouden + keep_media: Berichten met mediabijlagen behouden + keep_pinned: Vastgemaakte berichten behouden min_age: '1209600': 2 weken '15778476': 6 maanden @@ -1458,8 +1547,10 @@ nl: silence: Jouw account %{acct} is nu beperkt suspend: Jouw account %{acct} is opgeschort title: + delete_statuses: Berichten verwijderd disable: Account bevroren none: Waarschuwing + sensitive: Account is als gevoelig gemarkeerd silence: Account beperkt suspend: Account opgeschort welcome: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 61456e921..bd7039399 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -85,6 +85,7 @@ cs: ip: Zadejte IPv4 nebo IPv6 adresu. Můžete blokovat celé rozsahy použitím CIDR notace. Dejte pozor, ať neodříznete přístup sami sobě! severities: no_access: Blokovat přístup ke všem zdrojům + sign_up_block: Nové přihlášení nebude možné sign_up_requires_approval: Nové registrace budou vyžadovat schválení severity: Zvolte, jak naložit s požadavky z dané IP rule: @@ -96,7 +97,9 @@ cs: name: Můžete měnit pouze velikost písmen, například kvůli lepší čitelnosti user: chosen_languages: Po zaškrtnutí budou ve veřejných časových osách zobrazeny pouze příspěvky ve zvolených jazycích + role: Role určuje, která oprávnění má uživatel user_role: + color: Barva, která má být použita pro roli v celém UI, jako RGB v hex formátu highlighted: Toto roli učiní veřejně viditelnou permissions_as_keys: Uživatelé s touto rolí budou moci... webhook: @@ -247,6 +250,7 @@ cs: events: Zapnuté události url: URL koncového bodu 'no': Ne + not_recommended: Nedoporučuje se recommended: Doporučeno required: mark: "*" diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index cd9811f3c..0da328b82 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -37,6 +37,7 @@ nl: current_password: Voer voor veiligheidsredenen het wachtwoord van je huidige account in current_username: Voer ter bevestiging de gebruikersnaam van je huidige account in digest: Wordt alleen na een lange periode van inactiviteit verzonden en alleen wanneer je tijdens jouw afwezigheid persoonlijke berichten hebt ontvangen + discoverable: Toestaan dat jouw account vindbaar is voor onbekenden, via aanbevelingen, trends en op andere manieren 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 @@ -82,6 +83,7 @@ nl: ip: Voer een IPv4- of IPv6-adres in. Je kunt hele reeksen blokkeren met de CIDR-methode. Pas op dat je jezelf niet buitensluit! severities: no_access: Toegang tot de hele server blokkeren + sign_up_block: Nieuwe registraties zijn niet mogelijk sign_up_requires_approval: Nieuwe registraties vereisen jouw goedkeuring severity: Kies wat er moet gebeuren met aanvragen van dit IP-adres rule: @@ -206,6 +208,7 @@ nl: ip: IP severities: no_access: Toegang blokkeren + sign_up_block: Registraties blokkeren sign_up_requires_approval: Registraties beperken severity: Regel notification_emails: @@ -236,6 +239,7 @@ nl: webhook: url: Eindpunt URL 'no': Nee + not_recommended: Niet aanbevolen recommended: Aanbevolen required: mark: "*" diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index fd17afb0e..0c0cd4998 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -85,6 +85,7 @@ sq: ip: Jepni një adresë IPv4 ose IPv6. Duke përdorur sintaksën CIDR, mund të bllokoni intervale të tëra. Hapni sytë mos lini veten jashtë! severities: no_access: Blloko hyrje në krejt burimet + sign_up_block: S’do të jenë të mundur regjistrime të reja sign_up_requires_approval: Regjistrime të reja do të duan miratimin tuaj severity: Zgjidhni ç’do të ndodhë me kërkesa nga kjo IP rule: @@ -219,6 +220,7 @@ sq: ip: IP severities: no_access: Bllokoji hyrjen + sign_up_block: Blloko regjistrime sign_up_requires_approval: Kufizo regjistrime severity: Rregull notification_emails: @@ -251,6 +253,7 @@ sq: events: Akte të aktivizuar url: URL pikëmbarimi 'no': Jo + not_recommended: Jo e këshilluar recommended: E rekomanduar required: mark: "*" diff --git a/config/locales/sq.yml b/config/locales/sq.yml index ef72bfbdf..3beca5f53 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -235,17 +235,21 @@ sq: approve_user: Miratoje Përdoruesin assigned_to_self_report: Caktoji Raportim change_email_user: Ndrysho Email për Përdoruesin + change_role_user: Ndryshoni Rol Përdoruesi confirm_user: Ripohoje Përdoruesin create_account_warning: Krijo Sinjalizim create_announcement: Krijoni Lajmërim + create_canonical_email_block: Krijoni Bllokim Email-esh create_custom_emoji: Krijo Emotikon Vetjak create_domain_allow: Krijo Lejim Përkatësie create_domain_block: Krijo Bllokim Përkatësie create_email_domain_block: Krijo Bllokim Përkatësie Email-esh create_ip_block: Krijoni Rregull IP create_unavailable_domain: Krijo Përkatësi të Papërdorshme + create_user_role: Krijoni Rol demote_user: Zhgradoje Përdoruesin destroy_announcement: Fshije Lajmërimin + destroy_canonical_email_block: Fshi Bllokim El-esh destroy_custom_emoji: Fshi Emotikon Vetjak destroy_domain_allow: Fshi Lejim Përkatësie destroy_domain_block: Fshi Bllokim Përkatësie @@ -254,6 +258,7 @@ sq: destroy_ip_block: Fshini Rregull IP destroy_status: Fshi Gjendje destroy_unavailable_domain: Fshi Përkatësi të Papërdorshme + destroy_user_role: Asgjësoje Rolin disable_2fa_user: Çaktivizo 2FA-në disable_custom_emoji: Çaktivizo Emotikon Vetjak disable_sign_in_token_auth_user: Çaktivizo Mirëfilltësim me Token Email-i për Përdoruesin @@ -280,23 +285,30 @@ sq: update_announcement: Përditëso Lajmërimin update_custom_emoji: Përditëso Emoxhi Vetjake update_domain_block: Përditëso Bllok Përkatësish + update_ip_block: Përditësoni rregull IP update_status: Përditëso Gjendjen + update_user_role: Përditësoni Rol actions: approve_appeal_html: "%{name} miratoi apelim vendimi moderimi nga %{target}" approve_user_html: "%{name} miratoi regjistrim nga %{target}" assigned_to_self_report_html: "%{name} ia kaloi raportimin %{target} në ngarkim vetvetes" change_email_user_html: "%{name} ndryshoi adresën email të përdoruesit %{target}" + change_role_user_html: "%{name} ndryshoi rolin e %{target}" confirm_user_html: "%{name} ripohoi adresën email të përdoruesit %{target}" create_account_warning_html: "%{name} dërgoi një sinjalizim për %{target}" create_announcement_html: "%{name} krijoi lajmërim të ri për %{target}" + create_canonical_email_block_html: "%{name} bllokoi email-in me hashin %{target}" create_custom_emoji_html: "%{name} ngarkoi emoxhi të ri %{target}" create_domain_allow_html: "%{name} lejoi federim me përkatësinë %{target}" create_domain_block_html: "%{name} bllokoi përkatësinë %{target}" create_email_domain_block_html: "%{name} bllokoi përkatësinë email %{target}" create_ip_block_html: "%{name} krijoi rregull për IP-në %{target}" create_unavailable_domain_html: "%{name} ndali dërgimin drejt përkatësisë %{target}" + create_user_role_html: "%{name} krijoi rolin %{target}" demote_user_html: "%{name} zhgradoi përdoruesin %{target}" destroy_announcement_html: "%{name} fshiu lajmërimin për %{target}" + destroy_canonical_email_block_html: "%{name} zhbllokoi email-n me hashin %{target}" + destroy_custom_emoji_html: "%{name} fshiu emoji-n %{target}" destroy_domain_allow_html: "%{name} hoqi lejimin për federim me %{target}" destroy_domain_block_html: "%{name} zhbllokoi përkatësinë %{target}" destroy_email_domain_block_html: "%{name} hoqi bllokimin për përkatësinë email %{target}" @@ -304,6 +316,7 @@ sq: destroy_ip_block_html: "%{name} fshiu rregull për IP-në %{target}" destroy_status_html: "%{name} hoqi gjendje nga %{target}" destroy_unavailable_domain_html: "%{name} rinisi dërgimin drejt përkatësisë %{target}" + destroy_user_role_html: "%{name} fshiu rolin %{target}" disable_2fa_user_html: "%{name} çaktivizoi domosdoshmërinë për dyfaktorësh për përdoruesin %{target}" disable_custom_emoji_html: "%{name} çaktivizoi emoxhin %{target}" disable_sign_in_token_auth_user_html: "%{name} çaktivizo mirëfilltësim me token email-i për %{target}" @@ -330,7 +343,9 @@ sq: update_announcement_html: "%{name} përditësoi lajmërimin %{target}" update_custom_emoji_html: "%{name} përditësoi emoxhin %{target}" update_domain_block_html: "%{name} përditësoi bllokimin e përkatësish për %{target}" + update_ip_block_html: "%{name} ndryshoi rregull për IP-në %{target}" update_status_html: "%{name} përditësoi gjendjen me %{target}" + update_user_role_html: "%{name} ndryshoi rolin për %{target}" empty: S’u gjetën regjistra. filter_by_action: Filtroji sipas veprimit filter_by_user: Filtroji sipas përdoruesit @@ -789,6 +804,9 @@ sq: desc_html: Shfaqni lidhje te rrjedhë kohore publike në faqen hyrëse dhe lejoni te rrjedhë kohore publike hyrje API pa mirëfilltësim title: Lejo në rrjedhë kohore publike hyrje pa mirëfilltësim title: Rregullime sajti + trendable_by_default: + desc_html: Lënda specifike në modë prapë mund të ndalohet shprehimisht + title: Lejoni prirje pa shqyrtim paraprak trends: desc_html: Shfaqni publikisht hashtag-ë të shqyrtuar më parë që janë popullorë tani title: Hashtag-ë popullorë tani @@ -850,6 +868,7 @@ sq: other: Ndarë me të tjerë nga %{count} vetë gjatë javës së kaluar title: Lidhje në modë usage_comparison: Ndarë %{today} herë sot, kundrejt %{yesterday} dje + only_allowed: Lejuar vetëm pending_review: Në pritje të shqyrtimit preview_card_providers: allowed: Lidhje prej këtij botuesi mund të përdoren @@ -869,6 +888,7 @@ sq: other: Ndarë me të tjerë, ose shënuar si e parapëlqyer %{friendly_count} herë title: Postime në modë tags: + current_score: Vlera aktuale %{score} dashboard: tag_accounts_measure: përdorime unike tag_languages_dimension: Gjuhë kryesuese @@ -940,6 +960,7 @@ sq: body: 'Gjërat vijuese lypin një shqyrtim, përpara se të mund të shfaqen publikisht:' new_trending_links: no_approved_links: Aktualisht s’ka lidhje në modë të miratuara. + requirements: 'Cilido prej këtyre kandidatëve mund të kalojë lidhjen e miratuar për në modë #%{rank}, që aktualisht është “%{lowest_link_title}” me pikë %{lowest_link_score}.' title: Lidhje në modë new_trending_statuses: no_approved_statuses: Aktualisht s’ka postime në modë të miratuar. @@ -1167,6 +1188,8 @@ sq: edit: add_keyword: Shtoni fjalëkyç keywords: Fjalëkyçe + statuses: Postime individuale + statuses_hint_html: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësish se kanë apo jo përkim me fjalëkyçat më poshtë. Shqyrtoni, ose hiqni postime prej filtrit. title: Përpunoni filtër errors: deprecated_api_multiple_keywords: Këta parametra s’mund të ndryshohen nga ky aplikacion, ngaqë aplikohen mbi më shumë se një fjalëkyç filtri. Përdorni një aplikacion më të ri, ose ndërfaqen web. @@ -1180,10 +1203,23 @@ sq: keywords: one: "%{count} fjalëkyç" other: "%{count} fjalëkyçe" + statuses: + one: "%{count} postim" + other: "%{count} postime" + statuses_long: + one: "%{count} postim individual i fshehur" + other: "%{count} postime individuale të fshehur" title: Filtra new: save: Ruani filtër të ri title: Shtoni filtër të ri + statuses: + back_to_filter: Mbrapsht te filtri + batch: + remove: Hiqe prej filtri + index: + hint: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësisht kriteresh të tjera. Që nga ndërfaqja web mund të shtoni më tepër postime te ky filtër. + title: Postime të filtruar footer: developers: Zhvillues more: Më tepër… @@ -1191,12 +1227,22 @@ sq: trending_now: Prirjet e tashme generic: all: Krejt + all_items_on_page_selected_html: + one: Në këtë faqe është i përzgjedhur %{count} objekt. + other: Në këtë faqe janë përzgjedhur krejt %{count} objektet. + all_matching_items_selected_html: + one: Është përzgjedhur %{count} objekt me përkim me kërkimin tuaj. + other: Janë përzgjedhur krejt %{count} objektet me përkim me kërkimin tuaj. changes_saved_msg: Ndryshimet u ruajtën me sukses! copy: Kopjoje delete: Fshije + deselect: Shpërzgjidhi krejt none: Asnjë order_by: Renditi sipas save_changes: Ruaji ndryshimet + select_all_matching_items: + one: Përzgjidhni %{count} objekt me përkim me kërkimin tuaj. + other: Përzgjidhni krejt %{count} objektet me përkim me kërkimin tuaj. today: sot validation_errors: one: Diçka s’është ende si duhet! Ju lutemi, shqyrtoni gabimin më poshtë diff --git a/config/locales/th.yml b/config/locales/th.yml index 125bb3062..b5dd9bc36 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -292,6 +292,7 @@ th: confirm_user_html: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}" create_account_warning_html: "%{name} ได้ส่งคำเตือนไปยัง %{target}" create_announcement_html: "%{name} ได้สร้างประกาศใหม่ %{target}" + create_canonical_email_block_html: "%{name} ได้ปิดกั้นอีเมลที่มีแฮช %{target}" create_custom_emoji_html: "%{name} ได้อัปโหลดอีโมจิใหม่ %{target}" create_domain_allow_html: "%{name} ได้อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}" create_domain_block_html: "%{name} ได้ปิดกั้นโดเมน %{target}" @@ -301,6 +302,7 @@ th: create_user_role_html: "%{name} ได้สร้างบทบาท %{target}" demote_user_html: "%{name} ได้ลดขั้นผู้ใช้ %{target}" destroy_announcement_html: "%{name} ได้ลบประกาศ %{target}" + destroy_canonical_email_block_html: "%{name} ได้เลิกปิดกั้นอีเมลที่มีแฮช %{target}" destroy_custom_emoji_html: "%{name} ได้ลบอีโมจิ %{target}" destroy_domain_allow_html: "%{name} ได้ไม่อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}" destroy_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมน %{target}" @@ -658,7 +660,9 @@ th: other: "%{count} สิทธิอนุญาต" privileges: administrator: ผู้ดูแล + administrator_description: ผู้ใช้ที่มีสิทธิอนุญาตนี้จะข้ามทุกสิทธิอนุญาต delete_user_data: ลบข้อมูลผู้ใช้ + delete_user_data_description: อนุญาตให้ผู้ใช้ลบข้อมูลของผู้ใช้อื่น ๆ โดยทันที invite_users: เชิญผู้ใช้ invite_users_description: อนุญาตให้ผู้ใช้เชิญผู้คนใหม่ไปยังเซิร์ฟเวอร์ manage_announcements: จัดการประกาศ @@ -683,6 +687,8 @@ th: manage_taxonomies_description: อนุญาตให้ผู้ใช้ตรวจทานเนื้อหาที่กำลังนิยมและอัปเดตการตั้งค่าแฮชแท็ก manage_user_access: จัดการการเข้าถึงของผู้ใช้ manage_users: จัดการผู้ใช้ + manage_webhooks: จัดการเว็บฮุค + manage_webhooks_description: อนุญาตให้ผู้ใช้ตั้งค่าเว็บฮุคสำหรับเหตุการณ์การดูแล view_audit_log: ดูรายการบันทึกการตรวจสอบ view_audit_log_description: อนุญาตให้ผู้ใช้ดูประวัติการกระทำการดูแลในเซิร์ฟเวอร์ view_dashboard: ดูแดชบอร์ด @@ -771,6 +777,8 @@ th: desc_html: แสดงลิงก์ไปยังเส้นเวลาสาธารณะในหน้าเริ่มต้นและอนุญาตการเข้าถึง API ไปยังเส้นเวลาสาธารณะโดยไม่มีการรับรองความถูกต้อง title: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง title: การตั้งค่าไซต์ + trendable_by_default: + title: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า trends: desc_html: แสดงเนื้อหาที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมในปัจจุบันเป็นสาธารณะ title: แนวโน้ม @@ -800,8 +808,11 @@ th: suspend: "%{name} ได้ระงับบัญชีของ %{target}" appeal_approved: อุทธรณ์แล้ว system_checks: + elasticsearch_running_check: + message_html: ไม่สามารถเชื่อมต่อกับ Elasticsearch โปรดตรวจสอบว่าซอฟต์แวร์กำลังทำงาน หรือปิดใช้งานการค้นหาข้อความแบบเต็ม elasticsearch_version_check: message_html: 'รุ่น Elasticsearch ที่เข้ากันไม่ได้: %{value}' + version_comparison: Elasticsearch %{running_version} กำลังทำงานขณะที่ต้องการ %{required_version} rules_check: action: จัดการกฎของเซิร์ฟเวอร์ message_html: คุณไม่ได้กำหนดกฎของเซิร์ฟเวอร์ใด ๆ @@ -879,7 +890,10 @@ th: enabled_events: other: "%{count} เหตุการณ์ที่เปิดใช้งาน" events: เหตุการณ์ + new: เว็บฮุคใหม่ status: สถานะ + title: เว็บฮุค + webhook: เว็บฮุค admin_mailer: new_appeal: actions: @@ -978,6 +992,7 @@ th: setup: email_below_hint_html: หากที่อยู่อีเมลด้านล่างไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลที่นี่และรับอีเมลยืนยันใหม่ email_settings_hint_html: ส่งอีเมลยืนยันไปยัง %{email} แล้ว หากที่อยู่อีเมลนั้นไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลได้ในการตั้งค่าบัญชี + title: การตั้งค่า status: account_status: สถานะบัญชี confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ @@ -1152,6 +1167,10 @@ th: trending_now: กำลังนิยม generic: all: ทั้งหมด + all_items_on_page_selected_html: + other: เลือกอยู่ทั้งหมด %{count} รายการในหน้านี้ + all_matching_items_selected_html: + other: เลือกอยู่ทั้งหมด %{count} รายการที่ตรงกับการค้นหาของคุณ changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ! copy: คัดลอก delete: ลบ @@ -1159,6 +1178,8 @@ th: none: ไม่มี order_by: เรียงลำดับตาม save_changes: บันทึกการเปลี่ยนแปลง + select_all_matching_items: + other: เลือกทั้งหมด %{count} รายการที่ตรงกับการค้นหาของคุณ today: วันนี้ validation_errors: other: ยังมีบางอย่างไม่ถูกต้อง! โปรดตรวจทาน %{count} ข้อผิดพลาดด้านล่าง diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 151cc57c8..82a00b7fc 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1,7 +1,7 @@ --- tr: about: - about_hashtag_html: Bunlar #%{hashtag} ile etiketlenen genel tootlar. Fediverse içinde herhangi bir yerde bir hesabınız varsa, onlarla etkileşime geçebilirsiniz. + about_hashtag_html: Bunlar #%{hashtag} ile etiketlenen genel gönderiler. Fediverse içinde herhangi bir yerde bir hesabınız varsa, onlarla etkileşime geçebilirsiniz. about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir. about_this: Hakkında active_count_after: etkin diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 30e9f3e56..18b09369c 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -920,6 +920,7 @@ uk: tag_servers_dimension: Найуживаніші сервери tag_servers_measure: різні сервери tag_uses_measure: всього використань + description_html: Ці хештеґи, які бачить ваш сервер, в даний час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди в даний момент найбільше говорять. Жодні хештеґи публічно не відображаються, допоки ви їх не затвердите. listable: Може бути запропоновано not_listable: Не буде запропоновано not_trendable: Не показуватиметься серед популярних From 9ec25fd8dc3a9304930b9a79e92e0a0d20815ba4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:15:25 +0900 Subject: [PATCH 172/280] Bump @babel/preset-env from 7.19.0 to 7.19.1 (#19200) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.19.0 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 117 ++++++++++----------------------------------------- 2 files changed, 24 insertions(+), 95 deletions(-) diff --git a/package.json b/package.json index 5a603d723..9d6d9e1f7 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.19.1", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.1", - "@babel/preset-env": "^7.19.0", + "@babel/preset-env": "^7.19.1", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.0", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index e16166482..9d4c1f606 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,12 +37,7 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" - integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== - -"@babel/compat-data@^7.19.1": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== @@ -148,18 +143,6 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" @@ -400,10 +383,10 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz#cf5740194f170467df20581712400487efc79ff1" - integrity sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ== +"@babel/plugin-proposal-async-generator-functions@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" + integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.19.0" @@ -837,10 +820,10 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz#58c52422e4f91a381727faed7d513c89d7f41ada" - integrity sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" + integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" @@ -993,18 +976,18 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.0.tgz#fd18caf499a67d6411b9ded68dc70d01ed1e5da7" - integrity sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.1.tgz#9f04c916f9c0205a48ebe5cc1be7768eb1983f67" + integrity sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA== dependencies: - "@babel/compat-data" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.0" + "@babel/compat-data" "^7.19.1" + "@babel/helper-compilation-targets" "^7.19.1" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.19.0" + "@babel/plugin-proposal-async-generator-functions" "^7.19.1" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -1052,7 +1035,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.18.6" "@babel/plugin-transform-modules-systemjs" "^7.19.0" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" "@babel/plugin-transform-parameters" "^7.18.8" @@ -1068,10 +1051,10 @@ "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" "@babel/types" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -2715,7 +2698,7 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.2, babel-plugin-polyfill-corejs2@^0.3.3: +babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== @@ -2724,14 +2707,6 @@ babel-plugin-polyfill-corejs2@^0.3.2, babel-plugin-polyfill-corejs2@^0.3.3: "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" @@ -2740,7 +2715,7 @@ babel-plugin-polyfill-corejs3@^0.6.0: "@babel/helper-define-polyfill-provider" "^0.3.3" core-js-compat "^3.25.1" -babel-plugin-polyfill-regenerator@^0.4.0, babel-plugin-polyfill-regenerator@^0.4.1: +babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== @@ -3043,16 +3018,6 @@ browserslist@^4.0.0, browserslist@^4.12.0: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.21.0: - version "4.21.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" - integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== - dependencies: - caniuse-lite "^1.0.30001358" - electron-to-chromium "^1.4.164" - node-releases "^2.0.5" - update-browserslist-db "^1.0.0" - browserslist@^4.21.3, browserslist@^4.21.4: version "4.21.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" @@ -3251,11 +3216,6 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8" integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== -caniuse-lite@^1.0.30001358: - version "1.0.30001359" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" - integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== - caniuse-lite@^1.0.30001400: version "1.0.30001406" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001406.tgz#d0146e7919635479f873b4507517b627f66ab269" @@ -3659,14 +3619,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.23.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9" - integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw== - dependencies: - browserslist "^4.21.0" - semver "7.0.0" - core-js-compat@^3.25.1: version "3.25.2" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" @@ -4391,11 +4343,6 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052" integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig== -electron-to-chromium@^1.4.164: - version "1.4.170" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" - integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== - electron-to-chromium@^1.4.251: version "1.4.254" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz#c6203583890abf88dfc0be046cd72d3b48f8beb6" @@ -7883,11 +7830,6 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== -node-releases@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" - integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== - node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -10029,11 +9971,6 @@ selfsigned@^1.10.8: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -11370,14 +11307,6 @@ upath@^1.1.1, upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" - integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - update-browserslist-db@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" From 04cd244a9a84e3c62cf3b4fa4c389db239ddfb0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:21:51 +0900 Subject: [PATCH 173/280] Bump postcss-scss from 4.0.4 to 4.0.5 (#19198) Bumps [postcss-scss](https://github.com/postcss/postcss-scss) from 4.0.4 to 4.0.5. - [Release notes](https://github.com/postcss/postcss-scss/releases) - [Changelog](https://github.com/postcss/postcss-scss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss-scss/compare/4.0.4...4.0.5) --- updated-dependencies: - dependency-name: postcss-scss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9d6d9e1f7..2b8b20307 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "eslint-plugin-react": "~7.31.8", "jest": "^29.0.3", "jest-environment-jsdom": "^29.0.3", - "postcss-scss": "^4.0.4", + "postcss-scss": "^4.0.5", "prettier": "^2.7.1", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", diff --git a/yarn.lock b/yarn.lock index 9d4c1f606..25c820d13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8823,10 +8823,10 @@ postcss-safe-parser@^6.0.0: resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== -postcss-scss@^4.0.2, postcss-scss@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.4.tgz#aa8f60e19ee18259bc193db9e4b96edfce3f3b1f" - integrity sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg== +postcss-scss@^4.0.2, postcss-scss@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.5.tgz#8ee33c1dda8d9d4753b565ec79014803dc6edabf" + integrity sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA== postcss-selector-parser@^3.0.0: version "3.1.2" From 0b5e8ae2684673127ad2ff08ab54a66f176f5f61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:22:49 +0900 Subject: [PATCH 174/280] Bump stylelint from 14.11.0 to 14.12.0 (#19194) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.11.0 to 14.12.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.11.0...14.12.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 2b8b20307..8f61c70f5 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.11.0", + "stylelint": "^14.12.0", "stylelint-config-standard-scss": "^5.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index 25c820d13..3c85d1580 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4974,10 +4974,10 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.11, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== +fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -10670,10 +10670,10 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.11.0: - version "14.11.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.11.0.tgz#e2ecb28bbacab05e1fbeb84cbba23883b27499cc" - integrity sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA== +stylelint@^14.12.0: + version "14.12.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.12.0.tgz#86d5b60d0f30a6bd0b59e1d4c85a267f0caef97e" + integrity sha512-9Sa+IsT31PN9zf9q5ZVZNvhT6jMVu6YhpI38g3Akn7vONipGL0GNd9QCblwtJ3ysaoM80P/+9mOcFB1xnytiQQ== dependencies: "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" @@ -10681,7 +10681,7 @@ stylelint@^14.11.0: cosmiconfig "^7.0.1" css-functions-list "^3.1.0" debug "^4.3.4" - fast-glob "^3.2.11" + fast-glob "^3.2.12" fastest-levenshtein "^1.0.16" file-entry-cache "^6.0.1" global-modules "^2.0.0" @@ -10708,7 +10708,7 @@ stylelint@^14.11.0: string-width "^4.2.3" strip-ansi "^6.0.1" style-search "^0.1.0" - supports-hyperlinks "^2.2.0" + supports-hyperlinks "^2.3.0" svg-tags "^1.0.0" table "^6.8.0" v8-compile-cache "^2.3.0" @@ -10764,10 +10764,10 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== +supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" From 303221db24d492e8ddd63c386f3ff43965ac7727 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 20:24:22 +0900 Subject: [PATCH 175/280] Bump classnames from 2.3.1 to 2.3.2 (#19197) Bumps [classnames](https://github.com/JedWatson/classnames) from 2.3.1 to 2.3.2. - [Release notes](https://github.com/JedWatson/classnames/releases) - [Changelog](https://github.com/JedWatson/classnames/blob/main/HISTORY.md) - [Commits](https://github.com/JedWatson/classnames/compare/v2.3.1...v2.3.2) --- updated-dependencies: - dependency-name: classnames dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8f61c70f5..5472a41d8 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "babel-plugin-react-intl": "^6.2.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "blurhash": "^2.0.0", - "classnames": "^2.3.1", + "classnames": "^2.3.2", "cocoon-js-vanilla": "^1.3.0", "color-blend": "^3.0.1", "compression-webpack-plugin": "^6.1.1", diff --git a/yarn.lock b/yarn.lock index 3c85d1580..a6a897626 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3341,10 +3341,10 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5, classnames@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== +classnames@^2.2.5, classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== clean-stack@^2.0.0: version "2.2.0" From 1cc32dd50c88934b086ca20c36318b937d5ece04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 20:24:53 +0900 Subject: [PATCH 176/280] Bump i18n-tasks from 1.0.11 to 1.0.12 (#19195) Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.11 to 1.0.12. - [Release notes](https://github.com/glebm/i18n-tasks/releases) - [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md) - [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.11...v1.0.12) --- updated-dependencies: - dependency-name: i18n-tasks dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8b8a15623..ae43ce254 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,12 +110,11 @@ GEM coderay (>= 1.0.0) erubi (>= 1.0.0) rack (>= 0.9.0) - better_html (1.0.16) - actionview (>= 4.0) - activesupport (>= 4.0) + better_html (2.0.1) + actionview (>= 6.0) + activesupport (>= 6.0) ast (~> 2.0) erubi (~> 1.4) - html_tokenizer (~> 0.0.6) parser (>= 2.4) smart_properties bindata (2.4.10) @@ -299,7 +298,6 @@ GEM highline (2.0.3) hiredis (0.6.3) hkdf (0.3.0) - html_tokenizer (0.0.7) htmlentities (4.3.4) http (5.1.0) addressable (~> 2.8) @@ -316,10 +314,10 @@ GEM rainbow (>= 2.0.0) i18n (1.12.0) concurrent-ruby (~> 1.0) - i18n-tasks (1.0.11) + i18n-tasks (1.0.12) activesupport (>= 4.0.2) ast (>= 2.1.0) - better_html (~> 1.0) + better_html (>= 1.0, < 3.0) erubi highline (>= 2.0.0) i18n @@ -384,7 +382,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.18.0) + loofah (2.19.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) @@ -452,7 +450,7 @@ GEM orm_adapter (0.5.0) ox (2.14.11) parallel (1.22.1) - parser (3.1.2.0) + parser (3.1.2.1) ast (~> 2.4.1) parslet (2.0.0) pastel (0.8.0) @@ -688,7 +686,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.8.2) - unicode-display_width (2.1.0) + unicode-display_width (2.3.0) uniform_notifier (1.16.0) validate_email (0.1.6) activemodel (>= 3.0) From 84aff598ea0b5670ef2a0d1009bca9c9136c2d50 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 Sep 2022 14:48:35 +0200 Subject: [PATCH 177/280] Fix typo in SignatureVerification (#19209) Fix regression from #15605 --- app/controllers/concerns/signature_verification.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 89dc828f4..4da068aed 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -98,7 +98,7 @@ module SignatureVerification fail_with! e.message rescue HTTP::Error, OpenSSL::SSL::SSLError => e fail_with! "Failed to fetch remote data: #{e.message}" - rescue Mastodon::UnexptectedResponseError + rescue Mastodon::UnexpectedResponseError fail_with! 'Failed to fetch remote data (got unexpected reply from server)' rescue Stoplight::Error::RedLight fail_with! 'Fetching attempt skipped because of recent connection failure' From 8cf7006d4efbcfdd4a4ab688db1bcc73a2915a47 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 Sep 2022 22:45:57 +0200 Subject: [PATCH 178/280] Refactor ActivityPub handling to prepare for non-Account actors (#19212) * Move ActivityPub::FetchRemoteAccountService to ActivityPub::FetchRemoteActorService ActivityPub::FetchRemoteAccountService is kept as a wrapper for when the actor is specifically required to be an Account * Refactor SignatureVerification to allow non-Account actors * fixup! Move ActivityPub::FetchRemoteAccountService to ActivityPub::FetchRemoteActorService * Refactor ActivityPub::FetchRemoteKeyService to potentially return non-Account actors * Refactor inbound ActivityPub payload processing to accept non-Account actors * Refactor inbound ActivityPub processing to accept activities relayed through non-Account * Refactor how Account key URIs are built * Refactor Request and drop unused key_id_format parameter * Rename ActivityPub::Dereferencer `signature_account` to `signature_actor` --- app/controllers/accounts_controller.rb | 2 +- .../activitypub/claims_controller.rb | 2 +- .../activitypub/collections_controller.rb | 2 +- .../followers_synchronizations_controller.rb | 2 +- .../activitypub/inboxes_controller.rb | 10 +- .../activitypub/outboxes_controller.rb | 2 +- .../activitypub/replies_controller.rb | 2 +- .../concerns/signature_verification.rb | 52 +++-- .../follower_accounts_controller.rb | 2 +- .../following_accounts_controller.rb | 2 +- app/controllers/statuses_controller.rb | 2 +- app/controllers/tags_controller.rb | 2 +- app/lib/activitypub/activity.rb | 10 +- app/lib/activitypub/dereferencer.rb | 6 +- app/lib/activitypub/linked_data_signature.rb | 6 +- app/lib/activitypub/tag_manager.rb | 8 + app/lib/request.rb | 18 +- .../activitypub/public_key_serializer.rb | 2 +- .../fetch_remote_account_service.rb | 78 +------- .../activitypub/fetch_remote_actor_service.rb | 80 ++++++++ .../activitypub/fetch_remote_key_service.rb | 22 +-- .../activitypub/process_collection_service.rb | 11 +- app/services/fetch_resource_service.rb | 2 +- app/services/keys/claim_service.rb | 2 +- app/services/resolve_url_service.rb | 4 +- app/workers/activitypub/delivery_worker.rb | 2 +- app/workers/activitypub/processing_worker.rb | 12 +- spec/controllers/accounts_controller_spec.rb | 2 +- .../collections_controller_spec.rb | 2 +- ...lowers_synchronizations_controller_spec.rb | 2 +- .../activitypub/inboxes_controller_spec.rb | 2 +- .../activitypub/outboxes_controller_spec.rb | 2 +- .../activitypub/replies_controller_spec.rb | 2 +- .../concerns/signature_verification_spec.rb | 45 +++++ spec/controllers/statuses_controller_spec.rb | 2 +- .../lib/activitypub/activity/announce_spec.rb | 2 +- spec/lib/activitypub/dereferencer_spec.rb | 8 +- .../activitypub/linked_data_signature_spec.rb | 14 +- .../fetch_remote_actor_service_spec.rb | 180 ++++++++++++++++++ .../process_collection_service_spec.rb | 6 +- spec/services/fetch_resource_service_spec.rb | 2 +- 41 files changed, 436 insertions(+), 180 deletions(-) create mode 100644 app/services/activitypub/fetch_remote_actor_service.rb create mode 100644 spec/services/activitypub/fetch_remote_actor_service_spec.rb diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index fe7d934dc..d92f91b30 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -7,7 +7,7 @@ class AccountsController < ApplicationController include AccountControllerConcern include SignatureAuthentication - before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers before_action :set_body_classes diff --git a/app/controllers/activitypub/claims_controller.rb b/app/controllers/activitypub/claims_controller.rb index 08ad952df..339333e46 100644 --- a/app/controllers/activitypub/claims_controller.rb +++ b/app/controllers/activitypub/claims_controller.rb @@ -6,7 +6,7 @@ class ActivityPub::ClaimsController < ActivityPub::BaseController skip_before_action :authenticate_user! - before_action :require_signature! + before_action :require_account_signature! before_action :set_claim_result def create diff --git a/app/controllers/activitypub/collections_controller.rb b/app/controllers/activitypub/collections_controller.rb index e4e994a98..d94a285ea 100644 --- a/app/controllers/activitypub/collections_controller.rb +++ b/app/controllers/activitypub/collections_controller.rb @@ -4,7 +4,7 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController include SignatureVerification include AccountOwnedConcern - before_action :require_signature!, if: :authorized_fetch_mode? + before_action :require_account_signature!, if: :authorized_fetch_mode? before_action :set_items before_action :set_size before_action :set_type diff --git a/app/controllers/activitypub/followers_synchronizations_controller.rb b/app/controllers/activitypub/followers_synchronizations_controller.rb index 940b77cf0..4e445bcb1 100644 --- a/app/controllers/activitypub/followers_synchronizations_controller.rb +++ b/app/controllers/activitypub/followers_synchronizations_controller.rb @@ -4,7 +4,7 @@ class ActivityPub::FollowersSynchronizationsController < ActivityPub::BaseContro include SignatureVerification include AccountOwnedConcern - before_action :require_signature! + before_action :require_account_signature! before_action :set_items before_action :set_cache_headers diff --git a/app/controllers/activitypub/inboxes_controller.rb b/app/controllers/activitypub/inboxes_controller.rb index 92dcb5ac7..5ee85474e 100644 --- a/app/controllers/activitypub/inboxes_controller.rb +++ b/app/controllers/activitypub/inboxes_controller.rb @@ -6,7 +6,7 @@ class ActivityPub::InboxesController < ActivityPub::BaseController include AccountOwnedConcern before_action :skip_unknown_actor_activity - before_action :require_signature! + before_action :require_actor_signature! skip_before_action :authenticate_user! def create @@ -49,17 +49,17 @@ class ActivityPub::InboxesController < ActivityPub::BaseController end def upgrade_account - if signed_request_account.ostatus? + if signed_request_account&.ostatus? signed_request_account.update(last_webfingered_at: nil) ResolveAccountWorker.perform_async(signed_request_account.acct) end - DeliveryFailureTracker.reset!(signed_request_account.inbox_url) + DeliveryFailureTracker.reset!(signed_request_actor.inbox_url) end def process_collection_synchronization raw_params = request.headers['Collection-Synchronization'] - return if raw_params.blank? || ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] == 'true' + return if raw_params.blank? || ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] == 'true' || signed_request_account.nil? # Re-using the syntax for signature parameters tree = SignatureParamsParser.new.parse(raw_params) @@ -71,6 +71,6 @@ class ActivityPub::InboxesController < ActivityPub::BaseController end def process_payload - ActivityPub::ProcessingWorker.perform_async(signed_request_account.id, body, @account&.id) + ActivityPub::ProcessingWorker.perform_async(signed_request_actor.id, body, @account&.id, signed_request_actor.class.name) end end diff --git a/app/controllers/activitypub/outboxes_controller.rb b/app/controllers/activitypub/outboxes_controller.rb index cd3992502..60d201f76 100644 --- a/app/controllers/activitypub/outboxes_controller.rb +++ b/app/controllers/activitypub/outboxes_controller.rb @@ -6,7 +6,7 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController include SignatureVerification include AccountOwnedConcern - before_action :require_signature!, if: :authorized_fetch_mode? + before_action :require_account_signature!, if: :authorized_fetch_mode? before_action :set_statuses before_action :set_cache_headers diff --git a/app/controllers/activitypub/replies_controller.rb b/app/controllers/activitypub/replies_controller.rb index 4ff7cfa08..8e0f9de2e 100644 --- a/app/controllers/activitypub/replies_controller.rb +++ b/app/controllers/activitypub/replies_controller.rb @@ -7,7 +7,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController DESCENDANTS_LIMIT = 60 - before_action :require_signature!, if: :authorized_fetch_mode? + before_action :require_account_signature!, if: :authorized_fetch_mode? before_action :set_status before_action :set_cache_headers before_action :set_replies diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 4da068aed..2394574b3 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -45,10 +45,14 @@ module SignatureVerification end end - def require_signature! + def require_account_signature! render plain: signature_verification_failure_reason, status: signature_verification_failure_code unless signed_request_account end + def require_actor_signature! + render plain: signature_verification_failure_reason, status: signature_verification_failure_code unless signed_request_actor + end + def signed_request? request.headers['Signature'].present? end @@ -68,7 +72,11 @@ module SignatureVerification end def signed_request_account - return @signed_request_account if defined?(@signed_request_account) + signed_request_actor.is_a?(Account) ? signed_request_actor : nil + end + + def signed_request_actor + return @signed_request_actor if defined?(@signed_request_actor) raise SignatureVerificationError, 'Request not signed' unless signed_request? raise SignatureVerificationError, 'Incompatible request signature. keyId and signature are required' if missing_required_signature_parameters? @@ -78,22 +86,22 @@ module SignatureVerification verify_signature_strength! verify_body_digest! - account = account_from_key_id(signature_params['keyId']) + actor = actor_from_key_id(signature_params['keyId']) - raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if account.nil? + raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if actor.nil? signature = Base64.decode64(signature_params['signature']) compare_signed_string = build_signed_string - return account unless verify_signature(account, signature, compare_signed_string).nil? + return actor unless verify_signature(actor, signature, compare_signed_string).nil? - account = stoplight_wrap_request { account.possibly_stale? ? account.refresh! : account_refresh_key(account) } + actor = stoplight_wrap_request { actor_refresh_key!(actor) } - raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if account.nil? + raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if actor.nil? - return account unless verify_signature(account, signature, compare_signed_string).nil? + return actor unless verify_signature(actor, signature, compare_signed_string).nil? - fail_with! "Verification failed for #{account.username}@#{account.domain} #{account.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)" + fail_with! "Verification failed for #{actor.to_log_human_identifier} #{actor.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)" rescue SignatureVerificationError => e fail_with! e.message rescue HTTP::Error, OpenSSL::SSL::SSLError => e @@ -112,7 +120,7 @@ module SignatureVerification def fail_with!(message) @signature_verification_failure_reason = message - @signed_request_account = nil + @signed_request_actor = nil end def signature_params @@ -160,10 +168,10 @@ module SignatureVerification raise SignatureVerificationError, "Invalid Digest value. Computed SHA-256 digest: #{body_digest}; given: #{sha256[1]}" end - def verify_signature(account, signature, compare_signed_string) - if account.keypair.public_key.verify(OpenSSL::Digest.new('SHA256'), signature, compare_signed_string) - @signed_request_account = account - @signed_request_account + def verify_signature(actor, signature, compare_signed_string) + if actor.keypair.public_key.verify(OpenSSL::Digest.new('SHA256'), signature, compare_signed_string) + @signed_request_actor = actor + @signed_request_actor end rescue OpenSSL::PKey::RSAError nil @@ -226,7 +234,7 @@ module SignatureVerification signature_params['keyId'].blank? || signature_params['signature'].blank? end - def account_from_key_id(key_id) + def actor_from_key_id(key_id) domain = key_id.start_with?('acct:') ? key_id.split('@').last : key_id if domain_not_allowed?(domain) @@ -237,13 +245,13 @@ module SignatureVerification if key_id.start_with?('acct:') stoplight_wrap_request { ResolveAccountService.new.call(key_id.gsub(/\Aacct:/, ''), suppress_errors: false) } elsif !ActivityPub::TagManager.instance.local_uri?(key_id) - account = ActivityPub::TagManager.instance.uri_to_resource(key_id, Account) + account = ActivityPub::TagManager.instance.uri_to_actor(key_id) account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false, suppress_errors: false) } account end rescue Mastodon::PrivateNetworkAddressError => e raise SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})" - rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteAccountService::Error, ActivityPub::FetchRemoteKeyService::Error, Webfinger::Error => e + rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteActorService::Error, ActivityPub::FetchRemoteKeyService::Error, Webfinger::Error => e raise SignatureVerificationError, e.message end @@ -255,12 +263,14 @@ module SignatureVerification .run end - def account_refresh_key(account) - return if account.local? || !account.activitypub? - ActivityPub::FetchRemoteAccountService.new.call(account.uri, only_key: true, suppress_errors: false) + def actor_refresh_key!(actor) + return if actor.local? || !actor.activitypub? + return actor.refresh! if actor.respond_to?(:refresh!) && actor.possibly_stale? + + ActivityPub::FetchRemoteActorService.new.call(actor.uri, only_key: true, suppress_errors: false) rescue Mastodon::PrivateNetworkAddressError => e raise SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})" - rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteAccountService::Error, Webfinger::Error => e + rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteActorService::Error, Webfinger::Error => e raise SignatureVerificationError, e.message end end diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb index f3f8336c9..da7bb4ed2 100644 --- a/app/controllers/follower_accounts_controller.rb +++ b/app/controllers/follower_accounts_controller.rb @@ -4,7 +4,7 @@ class FollowerAccountsController < ApplicationController include AccountControllerConcern include SignatureVerification - before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers skip_around_action :set_locale, if: -> { request.format == :json } diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb index 69f0321f8..c37e3b68c 100644 --- a/app/controllers/following_accounts_controller.rb +++ b/app/controllers/following_accounts_controller.rb @@ -4,7 +4,7 @@ class FollowingAccountsController < ApplicationController include AccountControllerConcern include SignatureVerification - before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers skip_around_action :set_locale, if: -> { request.format == :json } diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index c52170d08..7d9db4d5b 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -8,7 +8,7 @@ class StatusesController < ApplicationController layout 'public' - before_action :require_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_status before_action :set_instance_presenter before_action :set_link_headers diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index b82da8f0c..6dbc2667a 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -8,7 +8,7 @@ class TagsController < ApplicationController layout 'public' - before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :authenticate_user!, if: :whitelist_mode? before_action :set_local before_action :set_tag diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 7ff06ea39..f4c67cccd 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -116,12 +116,12 @@ class ActivityPub::Activity def dereference_object! return unless @object.is_a?(String) - dereferencer = ActivityPub::Dereferencer.new(@object, permitted_origin: @account.uri, signature_account: signed_fetch_account) + dereferencer = ActivityPub::Dereferencer.new(@object, permitted_origin: @account.uri, signature_actor: signed_fetch_actor) @object = dereferencer.object unless dereferencer.object.nil? end - def signed_fetch_account + def signed_fetch_actor return Account.find(@options[:delivered_to_account_id]) if @options[:delivered_to_account_id].present? first_mentioned_local_account || first_local_follower @@ -163,15 +163,15 @@ class ActivityPub::Activity end def followed_by_local_accounts? - @account.passive_relationships.exists? || @options[:relayed_through_account]&.passive_relationships&.exists? + @account.passive_relationships.exists? || (@options[:relayed_through_actor].is_a?(Account) && @options[:relayed_through_actor].passive_relationships&.exists?) end def requested_through_relay? - @options[:relayed_through_account] && Relay.find_by(inbox_url: @options[:relayed_through_account].inbox_url)&.enabled? + @options[:relayed_through_actor] && Relay.find_by(inbox_url: @options[:relayed_through_actor].inbox_url)&.enabled? end def reject_payload! - Rails.logger.info("Rejected #{@json['type']} activity #{@json['id']} from #{@account.uri}#{@options[:relayed_through_account] && "via #{@options[:relayed_through_account].uri}"}") + Rails.logger.info("Rejected #{@json['type']} activity #{@json['id']} from #{@account.uri}#{@options[:relayed_through_actor] && "via #{@options[:relayed_through_actor].uri}"}") nil end end diff --git a/app/lib/activitypub/dereferencer.rb b/app/lib/activitypub/dereferencer.rb index bea69608f..4d7756d71 100644 --- a/app/lib/activitypub/dereferencer.rb +++ b/app/lib/activitypub/dereferencer.rb @@ -3,10 +3,10 @@ class ActivityPub::Dereferencer include JsonLdHelper - def initialize(uri, permitted_origin: nil, signature_account: nil) + def initialize(uri, permitted_origin: nil, signature_actor: nil) @uri = uri @permitted_origin = permitted_origin - @signature_account = signature_account + @signature_actor = signature_actor end def object @@ -46,7 +46,7 @@ class ActivityPub::Dereferencer req.add_headers('Accept' => 'application/activity+json, application/ld+json') req.add_headers(headers) if headers - req.on_behalf_of(@signature_account) if @signature_account + req.on_behalf_of(@signature_actor) if @signature_actor req.perform do |res| if res.code == 200 diff --git a/app/lib/activitypub/linked_data_signature.rb b/app/lib/activitypub/linked_data_signature.rb index e853a970e..f90adaf6c 100644 --- a/app/lib/activitypub/linked_data_signature.rb +++ b/app/lib/activitypub/linked_data_signature.rb @@ -9,7 +9,7 @@ class ActivityPub::LinkedDataSignature @json = json.with_indifferent_access end - def verify_account! + def verify_actor! return unless @json['signature'].is_a?(Hash) type = @json['signature']['type'] @@ -18,7 +18,7 @@ class ActivityPub::LinkedDataSignature return unless type == 'RsaSignature2017' - creator = ActivityPub::TagManager.instance.uri_to_resource(creator_uri, Account) + creator = ActivityPub::TagManager.instance.uri_to_actor(creator_uri) creator ||= ActivityPub::FetchRemoteKeyService.new.call(creator_uri, id: false) return if creator.nil? @@ -35,7 +35,7 @@ class ActivityPub::LinkedDataSignature def sign!(creator, sign_with: nil) options = { 'type' => 'RsaSignature2017', - 'creator' => [ActivityPub::TagManager.instance.uri_for(creator), '#main-key'].join, + 'creator' => ActivityPub::TagManager.instance.key_uri_for(creator), 'created' => Time.now.utc.iso8601, } diff --git a/app/lib/activitypub/tag_manager.rb b/app/lib/activitypub/tag_manager.rb index f6b9741fa..3d6b28ef5 100644 --- a/app/lib/activitypub/tag_manager.rb +++ b/app/lib/activitypub/tag_manager.rb @@ -44,6 +44,10 @@ class ActivityPub::TagManager end end + def key_uri_for(target) + [uri_for(target), '#main-key'].join + end + def uri_for_username(username) account_url(username: username) end @@ -155,6 +159,10 @@ class ActivityPub::TagManager path_params[param] end + def uri_to_actor(uri) + uri_to_resource(uri, Account) + end + def uri_to_resource(uri, klass) return if uri.nil? diff --git a/app/lib/request.rb b/app/lib/request.rb index eac04c798..648aa3085 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -40,12 +40,11 @@ class Request set_digest! if options.key?(:body) end - def on_behalf_of(account, key_id_format = :uri, sign_with: nil) - raise ArgumentError, 'account must not be nil' if account.nil? + def on_behalf_of(actor, sign_with: nil) + raise ArgumentError, 'actor must not be nil' if actor.nil? - @account = account - @keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : @account.keypair - @key_id_format = key_id_format + @actor = actor + @keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : @actor.keypair self end @@ -79,7 +78,7 @@ class Request end def headers - (@account ? @headers.merge('Signature' => signature) : @headers).without(REQUEST_TARGET) + (@actor ? @headers.merge('Signature' => signature) : @headers).without(REQUEST_TARGET) end class << self @@ -128,12 +127,7 @@ class Request end def key_id - case @key_id_format - when :acct - @account.to_webfinger_s - when :uri - [ActivityPub::TagManager.instance.uri_for(@account), '#main-key'].join - end + ActivityPub::TagManager.instance.key_uri_for(@actor) end def http_client diff --git a/app/serializers/activitypub/public_key_serializer.rb b/app/serializers/activitypub/public_key_serializer.rb index 62ed49e81..8621517e7 100644 --- a/app/serializers/activitypub/public_key_serializer.rb +++ b/app/serializers/activitypub/public_key_serializer.rb @@ -6,7 +6,7 @@ class ActivityPub::PublicKeySerializer < ActivityPub::Serializer attributes :id, :owner, :public_key_pem def id - [ActivityPub::TagManager.instance.uri_for(object), '#main-key'].join + ActivityPub::TagManager.instance.key_uri_for(object) end def owner diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb index d7d739c59..ca7a8c6ca 100644 --- a/app/services/activitypub/fetch_remote_account_service.rb +++ b/app/services/activitypub/fetch_remote_account_service.rb @@ -1,80 +1,12 @@ # frozen_string_literal: true -class ActivityPub::FetchRemoteAccountService < BaseService - include JsonLdHelper - include DomainControlHelper - include WebfingerHelper - - class Error < StandardError; end - - SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze - +class ActivityPub::FetchRemoteAccountService < ActivityPub::FetchRemoteActorService # Does a WebFinger roundtrip on each call, unless `only_key` is true def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true) - return if domain_not_allowed?(uri) - return ActivityPub::TagManager.instance.uri_to_resource(uri, Account) if ActivityPub::TagManager.instance.local_uri?(uri) + actor = super + return actor if actor.nil? || actor.is_a?(Account) - @json = begin - if prefetched_body.nil? - fetch_resource(uri, id) - else - body_to_json(prefetched_body, compare_id: id ? uri : nil) - end - rescue Oj::ParseError - raise Error, "Error parsing JSON-LD document #{uri}" - end - - raise Error, "Error fetching actor JSON at #{uri}" if @json.nil? - raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context? - raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type? - raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present? - - @uri = @json['id'] - @username = @json['preferredUsername'] - @domain = Addressable::URI.parse(@uri).normalized_host - - check_webfinger! unless only_key - - ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key) - rescue Error => e - Rails.logger.debug "Fetching account #{uri} failed: #{e.message}" - raise unless suppress_errors - end - - private - - def check_webfinger! - webfinger = webfinger!("acct:#{@username}@#{@domain}") - confirmed_username, confirmed_domain = split_acct(webfinger.subject) - - if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? - raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri - return - end - - webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}") - @username, @domain = split_acct(webfinger.subject) - - unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? - raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" - end - - raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri - rescue Webfinger::RedirectError => e - raise Error, e.message - rescue Webfinger::Error => e - raise Error, "Webfinger error when resolving #{@username}@#{@domain}: #{e.message}" - end - - def split_acct(acct) - acct.gsub(/\Aacct:/, '').split('@') - end - - def supported_context? - super(@json) - end - - def expected_type? - equals_or_includes_any?(@json['type'], SUPPORTED_TYPES) + Rails.logger.debug "Fetching account #{uri} failed: Expected Account, got #{actor.class.name}" + raise Error, "Expected Account, got #{actor.class.name}" unless suppress_errors end end diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb new file mode 100644 index 000000000..17bf2f287 --- /dev/null +++ b/app/services/activitypub/fetch_remote_actor_service.rb @@ -0,0 +1,80 @@ +# frozen_string_literal: true + +class ActivityPub::FetchRemoteActorService < BaseService + include JsonLdHelper + include DomainControlHelper + include WebfingerHelper + + class Error < StandardError; end + + SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze + + # Does a WebFinger roundtrip on each call, unless `only_key` is true + def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true) + return if domain_not_allowed?(uri) + return ActivityPub::TagManager.instance.uri_to_actor(uri) if ActivityPub::TagManager.instance.local_uri?(uri) + + @json = begin + if prefetched_body.nil? + fetch_resource(uri, id) + else + body_to_json(prefetched_body, compare_id: id ? uri : nil) + end + rescue Oj::ParseError + raise Error, "Error parsing JSON-LD document #{uri}" + end + + raise Error, "Error fetching actor JSON at #{uri}" if @json.nil? + raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context? + raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type? + raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present? + + @uri = @json['id'] + @username = @json['preferredUsername'] + @domain = Addressable::URI.parse(@uri).normalized_host + + check_webfinger! unless only_key + + ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key) + rescue Error => e + Rails.logger.debug "Fetching actor #{uri} failed: #{e.message}" + raise unless suppress_errors + end + + private + + def check_webfinger! + webfinger = webfinger!("acct:#{@username}@#{@domain}") + confirmed_username, confirmed_domain = split_acct(webfinger.subject) + + if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + return + end + + webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}") + @username, @domain = split_acct(webfinger.subject) + + unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? + raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" + end + + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + rescue Webfinger::RedirectError => e + raise Error, e.message + rescue Webfinger::Error => e + raise Error, "Webfinger error when resolving #{@username}@#{@domain}: #{e.message}" + end + + def split_acct(acct) + acct.gsub(/\Aacct:/, '').split('@') + end + + def supported_context? + super(@json) + end + + def expected_type? + equals_or_includes_any?(@json['type'], SUPPORTED_TYPES) + end +end diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb index 01008d883..fe8f60b55 100644 --- a/app/services/activitypub/fetch_remote_key_service.rb +++ b/app/services/activitypub/fetch_remote_key_service.rb @@ -5,7 +5,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService class Error < StandardError; end - # Returns account that owns the key + # Returns actor that owns the key def call(uri, id: true, prefetched_body: nil, suppress_errors: true) raise Error, 'No key URI given' if uri.blank? @@ -27,7 +27,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService raise Error, "Unable to fetch key JSON at #{uri}" if @json.nil? raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?(@json) raise Error, "Unexpected object type for key #{uri}" unless expected_type? - return find_account(@json['id'], @json, suppress_errors) if person? + return find_actor(@json['id'], @json, suppress_errors) if person? @owner = fetch_resource(owner_uri, true) @@ -36,7 +36,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService raise Error, "Unexpected object type for actor #{owner_uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_owner_type? raise Error, "publicKey id for #{owner_uri} does not correspond to #{@json['id']}" unless confirmed_owner? - find_account(owner_uri, @owner, suppress_errors) + find_actor(owner_uri, @owner, suppress_errors) rescue Error => e Rails.logger.debug "Fetching key #{uri} failed: #{e.message}" raise unless suppress_errors @@ -44,18 +44,18 @@ class ActivityPub::FetchRemoteKeyService < BaseService private - def find_account(uri, prefetched_body, suppress_errors) - account = ActivityPub::TagManager.instance.uri_to_resource(uri, Account) - account ||= ActivityPub::FetchRemoteAccountService.new.call(uri, prefetched_body: prefetched_body, suppress_errors: suppress_errors) - account + def find_actor(uri, prefetched_body, suppress_errors) + actor = ActivityPub::TagManager.instance.uri_to_actor(uri) + actor ||= ActivityPub::FetchRemoteActorService.new.call(uri, prefetched_body: prefetched_body, suppress_errors: suppress_errors) + actor end def expected_type? - person? || public_key? + actor? || public_key? end - def person? - equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) + def actor? + equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) end def public_key? @@ -67,7 +67,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService end def expected_owner_type? - equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) + equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) end def confirmed_owner? diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb index eb008c40a..fffe30195 100644 --- a/app/services/activitypub/process_collection_service.rb +++ b/app/services/activitypub/process_collection_service.rb @@ -3,8 +3,8 @@ class ActivityPub::ProcessCollectionService < BaseService include JsonLdHelper - def call(body, account, **options) - @account = account + def call(body, actor, **options) + @account = actor @json = original_json = Oj.load(body, mode: :strict) @options = options @@ -16,6 +16,7 @@ class ActivityPub::ProcessCollectionService < BaseService end return if !supported_context? || (different_actor? && verify_account!.nil?) || suspended_actor? || @account.local? + return unless @account.is_a?(Account) if @json['signature'].present? # We have verified the signature, but in the compaction step above, might @@ -66,8 +67,10 @@ class ActivityPub::ProcessCollectionService < BaseService end def verify_account! - @options[:relayed_through_account] = @account - @account = ActivityPub::LinkedDataSignature.new(@json).verify_account! + @options[:relayed_through_actor] = @account + @account = ActivityPub::LinkedDataSignature.new(@json).verify_actor! + @account = nil unless @account.is_a?(Account) + @account rescue JSON::LD::JsonLdError => e Rails.logger.debug "Could not verify LD-Signature for #{value_or_id(@json['actor'])}: #{e.message}" nil diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb index 6c0093cd4..73204e55d 100644 --- a/app/services/fetch_resource_service.rb +++ b/app/services/fetch_resource_service.rb @@ -47,7 +47,7 @@ class FetchResourceService < BaseService body = response.body_with_limit json = body_to_json(body) - [json['id'], { prefetched_body: body, id: true }] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) || expected_type?(json)) + [json['id'], { prefetched_body: body, id: true }] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) || expected_type?(json)) elsif !terminal link_header = response['Link'] && parse_link_header(response) diff --git a/app/services/keys/claim_service.rb b/app/services/keys/claim_service.rb index 69568a0d1..ae9e24a24 100644 --- a/app/services/keys/claim_service.rb +++ b/app/services/keys/claim_service.rb @@ -72,7 +72,7 @@ class Keys::ClaimService < BaseService def build_post_request(uri) Request.new(:post, uri).tap do |request| - request.on_behalf_of(@source_account, :uri) + request.on_behalf_of(@source_account) request.add_headers(HEADERS) end end diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb index e2c745673..37c856cf8 100644 --- a/app/services/resolve_url_service.rb +++ b/app/services/resolve_url_service.rb @@ -20,8 +20,8 @@ class ResolveURLService < BaseService private def process_url - if equals_or_includes_any?(type, ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) - ActivityPub::FetchRemoteAccountService.new.call(resource_url, prefetched_body: body) + if equals_or_includes_any?(type, ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) + ActivityPub::FetchRemoteActorService.new.call(resource_url, prefetched_body: body) elsif equals_or_includes_any?(type, ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES) status = FetchRemoteStatusService.new.call(resource_url, body) authorize_with @on_behalf_of, status, :show? unless status.nil? diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb index 788f2cf80..d9153132b 100644 --- a/app/workers/activitypub/delivery_worker.rb +++ b/app/workers/activitypub/delivery_worker.rb @@ -37,7 +37,7 @@ class ActivityPub::DeliveryWorker def build_request(http_client) Request.new(:post, @inbox_url, body: @json, http_client: http_client).tap do |request| - request.on_behalf_of(@source_account, :uri, sign_with: @options[:sign_with]) + request.on_behalf_of(@source_account, sign_with: @options[:sign_with]) request.add_headers(HEADERS) request.add_headers({ 'Collection-Synchronization' => synchronization_header }) if ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] != 'true' && @options[:synchronize_followers] end diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb index 37e316354..4d06ad079 100644 --- a/app/workers/activitypub/processing_worker.rb +++ b/app/workers/activitypub/processing_worker.rb @@ -5,11 +5,15 @@ class ActivityPub::ProcessingWorker sidekiq_options backtrace: true, retry: 8 - def perform(account_id, body, delivered_to_account_id = nil) - account = Account.find_by(id: account_id) - return if account.nil? + def perform(actor_id, body, delivered_to_account_id = nil, actor_type = 'Account') + case actor_type + when 'Account' + actor = Account.find_by(id: actor_id) + end - ActivityPub::ProcessCollectionService.new.call(body, account, override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true) + return if actor.nil? + + ActivityPub::ProcessCollectionService.new.call(body, actor, override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true) rescue ActiveRecord::RecordInvalid => e Rails.logger.debug "Error processing incoming ActivityPub object: #{e}" end diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index 662a89927..12266c800 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -420,7 +420,7 @@ RSpec.describe AccountsController, type: :controller do let(:remote_account) { Fabricate(:account, domain: 'example.com') } before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) get :show, params: { username: account.username, format: format } end diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb index 4d87f80ce..f78d9abbf 100644 --- a/spec/controllers/activitypub/collections_controller_spec.rb +++ b/spec/controllers/activitypub/collections_controller_spec.rb @@ -24,7 +24,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do end before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) Fabricate(:status_pin, account: account) Fabricate(:status_pin, account: account) diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb index e233bd560..c19bb8cae 100644 --- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb +++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb @@ -15,7 +15,7 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll end before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) end describe 'GET #show' do diff --git a/spec/controllers/activitypub/inboxes_controller_spec.rb b/spec/controllers/activitypub/inboxes_controller_spec.rb index 973ad83bb..2f023197b 100644 --- a/spec/controllers/activitypub/inboxes_controller_spec.rb +++ b/spec/controllers/activitypub/inboxes_controller_spec.rb @@ -6,7 +6,7 @@ RSpec.describe ActivityPub::InboxesController, type: :controller do let(:remote_account) { nil } before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) end describe 'POST #create' do diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb index 04f036447..74bf46a5e 100644 --- a/spec/controllers/activitypub/outboxes_controller_spec.rb +++ b/spec/controllers/activitypub/outboxes_controller_spec.rb @@ -28,7 +28,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do end before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) end describe 'GET #show' do diff --git a/spec/controllers/activitypub/replies_controller_spec.rb b/spec/controllers/activitypub/replies_controller_spec.rb index a35957f24..aee1a8b1a 100644 --- a/spec/controllers/activitypub/replies_controller_spec.rb +++ b/spec/controllers/activitypub/replies_controller_spec.rb @@ -168,7 +168,7 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do before do stub_const 'ActivityPub::RepliesController::DESCENDANTS_LIMIT', 5 - allow(controller).to receive(:signed_request_account).and_return(remote_querier) + allow(controller).to receive(:signed_request_actor).and_return(remote_querier) Fabricate(:status, thread: status, visibility: :public) Fabricate(:status, thread: status, visibility: :public) diff --git a/spec/controllers/concerns/signature_verification_spec.rb b/spec/controllers/concerns/signature_verification_spec.rb index 05fb1445b..6e73643b4 100644 --- a/spec/controllers/concerns/signature_verification_spec.rb +++ b/spec/controllers/concerns/signature_verification_spec.rb @@ -3,6 +3,16 @@ require 'rails_helper' describe ApplicationController, type: :controller do + class WrappedActor + attr_reader :wrapped_account + + def initialize(wrapped_account) + @wrapped_account = wrapped_account + end + + delegate :uri, :keypair, to: :wrapped_account + end + controller do include SignatureVerification @@ -73,6 +83,41 @@ describe ApplicationController, type: :controller do end end + context 'with a valid actor that is not an Account' do + let(:actor) { WrappedActor.new(author) } + + before do + get :success + + fake_request = Request.new(:get, request.url) + fake_request.on_behalf_of(author) + + request.headers.merge!(fake_request.headers) + + allow(ActivityPub::TagManager.instance).to receive(:uri_to_actor).with(anything) do + actor + end + end + + describe '#signed_request?' do + it 'returns true' do + expect(controller.signed_request?).to be true + end + end + + describe '#signed_request_account' do + it 'returns nil' do + expect(controller.signed_request_account).to be_nil + end + end + + describe '#signed_request_actor' do + it 'returns the expected actor' do + expect(controller.signed_request_actor).to eq actor + end + end + end + context 'with request older than a day' do before do get :success diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb index 05fae67fa..6ed5d4bbb 100644 --- a/spec/controllers/statuses_controller_spec.rb +++ b/spec/controllers/statuses_controller_spec.rb @@ -426,7 +426,7 @@ describe StatusesController do let(:remote_account) { Fabricate(:account, domain: 'example.com') } before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) end context 'when account blocks account' do diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb index 41806b258..e9cd6c68c 100644 --- a/spec/lib/activitypub/activity/announce_spec.rb +++ b/spec/lib/activitypub/activity/announce_spec.rb @@ -115,7 +115,7 @@ RSpec.describe ActivityPub::Activity::Announce do let(:object_json) { 'https://example.com/actor/hello-world' } - subject { described_class.new(json, sender, relayed_through_account: relay_account) } + subject { described_class.new(json, sender, relayed_through_actor: relay_account) } before do stub_request(:get, 'https://example.com/actor/hello-world').to_return(body: Oj.dump(unknown_object_json)) diff --git a/spec/lib/activitypub/dereferencer_spec.rb b/spec/lib/activitypub/dereferencer_spec.rb index ce30513d7..e50b497c7 100644 --- a/spec/lib/activitypub/dereferencer_spec.rb +++ b/spec/lib/activitypub/dereferencer_spec.rb @@ -4,10 +4,10 @@ RSpec.describe ActivityPub::Dereferencer do describe '#object' do let(:object) { { '@context': 'https://www.w3.org/ns/activitystreams', id: 'https://example.com/foo', type: 'Note', content: 'Hoge' } } let(:permitted_origin) { 'https://example.com' } - let(:signature_account) { nil } + let(:signature_actor) { nil } let(:uri) { nil } - subject { described_class.new(uri, permitted_origin: permitted_origin, signature_account: signature_account).object } + subject { described_class.new(uri, permitted_origin: permitted_origin, signature_actor: signature_actor).object } before do stub_request(:get, 'https://example.com/foo').to_return(body: Oj.dump(object), headers: { 'Content-Type' => 'application/activity+json' }) @@ -21,7 +21,7 @@ RSpec.describe ActivityPub::Dereferencer do end context 'with signature account' do - let(:signature_account) { Fabricate(:account) } + let(:signature_actor) { Fabricate(:account) } it 'makes signed request' do subject @@ -52,7 +52,7 @@ RSpec.describe ActivityPub::Dereferencer do end context 'with signature account' do - let(:signature_account) { Fabricate(:account) } + let(:signature_actor) { Fabricate(:account) } it 'makes signed request' do subject diff --git a/spec/lib/activitypub/linked_data_signature_spec.rb b/spec/lib/activitypub/linked_data_signature_spec.rb index 2222c46fb..d55a7c7fa 100644 --- a/spec/lib/activitypub/linked_data_signature_spec.rb +++ b/spec/lib/activitypub/linked_data_signature_spec.rb @@ -20,7 +20,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do stub_jsonld_contexts! end - describe '#verify_account!' do + describe '#verify_actor!' do context 'when signature matches' do let(:raw_signature) do { @@ -32,7 +32,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => sign(sender, raw_signature, raw_json)) } it 'returns creator' do - expect(subject.verify_account!).to eq sender + expect(subject.verify_actor!).to eq sender end end @@ -40,7 +40,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do let(:signature) { nil } it 'returns nil' do - expect(subject.verify_account!).to be_nil + expect(subject.verify_actor!).to be_nil end end @@ -55,7 +55,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => 's69F3mfddd99dGjmvjdjjs81e12jn121Gkm1') } it 'returns nil' do - expect(subject.verify_account!).to be_nil + expect(subject.verify_actor!).to be_nil end end end @@ -73,14 +73,14 @@ RSpec.describe ActivityPub::LinkedDataSignature do end it 'can be verified again' do - expect(described_class.new(subject).verify_account!).to eq sender + expect(described_class.new(subject).verify_actor!).to eq sender end end - def sign(from_account, options, document) + def sign(from_actor, options, document) options_hash = Digest::SHA256.hexdigest(canonicalize(options.merge('@context' => ActivityPub::LinkedDataSignature::CONTEXT))) document_hash = Digest::SHA256.hexdigest(canonicalize(document)) to_be_verified = options_hash + document_hash - Base64.strict_encode64(from_account.keypair.sign(OpenSSL::Digest.new('SHA256'), to_be_verified)) + Base64.strict_encode64(from_actor.keypair.sign(OpenSSL::Digest.new('SHA256'), to_be_verified)) end end diff --git a/spec/services/activitypub/fetch_remote_actor_service_spec.rb b/spec/services/activitypub/fetch_remote_actor_service_spec.rb new file mode 100644 index 000000000..20117c66d --- /dev/null +++ b/spec/services/activitypub/fetch_remote_actor_service_spec.rb @@ -0,0 +1,180 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do + subject { ActivityPub::FetchRemoteActorService.new } + + let!(:actor) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'https://example.com/alice', + type: 'Person', + preferredUsername: 'alice', + name: 'Alice', + summary: 'Foo bar', + inbox: 'http://example.com/alice/inbox', + } + end + + describe '#call' do + let(:account) { subject.call('https://example.com/alice', id: true) } + + shared_examples 'sets profile data' do + it 'returns an account' do + expect(account).to be_an Account + end + + it 'sets display name' do + expect(account.display_name).to eq 'Alice' + end + + it 'sets note' do + expect(account.note).to eq 'Foo bar' + end + + it 'sets URL' do + expect(account.url).to eq 'https://example.com/alice' + end + end + + context 'when the account does not have a inbox' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + + before do + actor[:inbox] = nil + + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'returns nil' do + expect(account).to be_nil + end + end + + context 'when URI and WebFinger share the same host' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'sets username and domain from webfinger' do + expect(account.username).to eq 'alice' + expect(account.domain).to eq 'example.com' + end + + include_examples 'sets profile data' + end + + context 'when WebFinger presents different domain than URI' do + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'looks up "redirected" webfinger' do + account + expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once + end + + it 'sets username and domain from final webfinger' do + expect(account.username).to eq 'alice' + expect(account.domain).to eq 'iscool.af' + end + + include_examples 'sets profile data' + end + + context 'when WebFinger returns a different URI' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'does not create account' do + expect(account).to be_nil + end + end + + context 'when WebFinger returns a different URI after a redirection' do + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'looks up "redirected" webfinger' do + account + expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once + end + + it 'does not create account' do + expect(account).to be_nil + end + end + + context 'with wrong id' do + it 'does not create account' do + expect(subject.call('https://fake.address/@foo', prefetched_body: Oj.dump(actor))).to be_nil + end + end + end +end diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb index 3eccaab5b..093a188a2 100644 --- a/spec/services/activitypub/process_collection_service_spec.rb +++ b/spec/services/activitypub/process_collection_service_spec.rb @@ -68,7 +68,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do let(:forwarder) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/other_account') } it 'does not process payload if no signature exists' do - expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(nil) + expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(nil) expect(ActivityPub::Activity).not_to receive(:factory) subject.call(json, forwarder) @@ -77,7 +77,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do it 'processes payload with actor if valid signature exists' do payload['signature'] = { 'type' => 'RsaSignature2017' } - expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(actor) + expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(actor) expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), actor, instance_of(Hash)) subject.call(json, forwarder) @@ -86,7 +86,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do it 'does not process payload if invalid signature exists' do payload['signature'] = { 'type' => 'RsaSignature2017' } - expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(nil) + expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(nil) expect(ActivityPub::Activity).not_to receive(:factory) subject.call(json, forwarder) diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb index ded05ffbc..c0c96ab69 100644 --- a/spec/services/fetch_resource_service_spec.rb +++ b/spec/services/fetch_resource_service_spec.rb @@ -66,7 +66,7 @@ RSpec.describe FetchResourceService, type: :service do it 'signs request' do subject - expect(a_request(:get, url).with(headers: { 'Signature' => /keyId="#{Regexp.escape(ActivityPub::TagManager.instance.uri_for(Account.representative) + '#main-key')}"/ })).to have_been_made + expect(a_request(:get, url).with(headers: { 'Signature' => /keyId="#{Regexp.escape(ActivityPub::TagManager.instance.key_uri_for(Account.representative))}"/ })).to have_been_made end context 'when content type is application/atom+xml' do From 26c51cfa07952b39802ce6de4c952c6adf56b748 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 Sep 2022 22:46:35 +0200 Subject: [PATCH 179/280] Fix various rspec warnings in ReportService tests (#19189) * Fix various rspec warnings in ReportService tests * Add tests to ReportService --- spec/services/report_service_spec.rb | 37 +++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb index ea68b3344..02bc42ac1 100644 --- a/spec/services/report_service_spec.rb +++ b/spec/services/report_service_spec.rb @@ -42,13 +42,44 @@ RSpec.describe ReportService, type: :service do end it 'creates a report' do - is_expected.to change { target_account.targeted_reports.count }.from(0).to(1) + expect { subject.call }.to change { target_account.targeted_reports.count }.from(0).to(1) + end + + it 'attaches the DM to the report' do + subject.call + expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[status.id]] end end context 'when it is not addressed to the reporter' do it 'errors out' do - is_expected.to raise_error + expect { subject.call }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'when the reporter is remote' do + let(:source_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/users/1') } + + context 'when it is addressed to the reporter' do + before do + status.mentions.create(account: source_account) + end + + it 'creates a report' do + expect { subject.call }.to change { target_account.targeted_reports.count }.from(0).to(1) + end + + it 'attaches the DM to the report' do + subject.call + expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[status.id]] + end + end + + context 'when it is not addressed to the reporter' do + it 'does not add the DM to the report' do + subject.call + expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[]] + end end end end @@ -67,7 +98,7 @@ RSpec.describe ReportService, type: :service do end it 'does not send an e-mail' do - is_expected.to_not change(ActionMailer::Base.deliveries, :count).from(0) + expect { subject.call }.to_not change(ActionMailer::Base.deliveries, :count).from(0) end end end From d2f7e30a283a1dca1f7974884ac0c237b93903ad Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 Sep 2022 22:46:57 +0200 Subject: [PATCH 180/280] Add privacy icons to report modal (#19190) --- .../report/components/status_check_box.js | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/report/components/status_check_box.js b/app/javascript/mastodon/features/report/components/status_check_box.js index 373c60e21..5366da90b 100644 --- a/app/javascript/mastodon/features/report/components/status_check_box.js +++ b/app/javascript/mastodon/features/report/components/status_check_box.js @@ -7,14 +7,25 @@ import DisplayName from 'mastodon/components/display_name'; import RelativeTimestamp from 'mastodon/components/relative_timestamp'; import Option from './option'; import MediaAttachments from 'mastodon/components/media_attachments'; +import { injectIntl, defineMessages } from 'react-intl'; +import Icon from 'mastodon/components/icon'; -export default class StatusCheckBox extends React.PureComponent { +const messages = defineMessages({ + public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, + unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, + private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, + direct_short: { id: 'privacy.direct.short', defaultMessage: 'Mentioned people only' }, +}); + +export default @injectIntl +class StatusCheckBox extends React.PureComponent { static propTypes = { id: PropTypes.string.isRequired, status: ImmutablePropTypes.map.isRequired, checked: PropTypes.bool, onToggle: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, }; handleStatusesToggle = (value, checked) => { @@ -23,12 +34,21 @@ export default class StatusCheckBox extends React.PureComponent { }; render () { - const { status, checked } = this.props; + const { status, checked, intl } = this.props; if (status.get('reblog')) { return null; } + const visibilityIconInfo = { + 'public': { icon: 'globe', text: intl.formatMessage(messages.public_short) }, + 'unlisted': { icon: 'unlock', text: intl.formatMessage(messages.unlisted_short) }, + 'private': { icon: 'lock', text: intl.formatMessage(messages.private_short) }, + 'direct': { icon: 'at', text: intl.formatMessage(messages.direct_short) }, + }; + + const visibilityIcon = visibilityIconInfo[status.get('visibility')]; + const labelComponent = (
@@ -37,7 +57,7 @@ export default class StatusCheckBox extends React.PureComponent {
- · + ·
From 0d6b878808a02aa4a544e894f06419c0f612c163 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 23 Sep 2022 23:00:12 +0200 Subject: [PATCH 181/280] Add user content translations with configurable backends (#19218) --- .../v1/statuses/translations_controller.rb | 29 ++++++++++ app/javascript/mastodon/actions/statuses.js | 39 +++++++++++++- app/javascript/mastodon/components/status.js | 16 +++++- .../mastodon/components/status_content.js | 31 ++++++++--- .../mastodon/containers/status_container.js | 10 ++++ .../status/components/detailed_status.js | 13 ++++- .../mastodon/features/status/index.js | 13 +++++ app/javascript/mastodon/reducers/statuses.js | 6 +++ app/lib/translation_service.rb | 23 ++++++++ app/lib/translation_service/deepl.rb | 53 +++++++++++++++++++ .../translation_service/libre_translate.rb | 43 +++++++++++++++ app/lib/translation_service/translation.rb | 5 ++ .../rest/translation_serializer.rb | 9 ++++ app/services/translate_status_service.rb | 24 +++++++++ config/initializers/inflections.rb | 1 + config/routes.rb | 2 + 16 files changed, 306 insertions(+), 11 deletions(-) create mode 100644 app/controllers/api/v1/statuses/translations_controller.rb create mode 100644 app/lib/translation_service.rb create mode 100644 app/lib/translation_service/deepl.rb create mode 100644 app/lib/translation_service/libre_translate.rb create mode 100644 app/lib/translation_service/translation.rb create mode 100644 app/serializers/rest/translation_serializer.rb create mode 100644 app/services/translate_status_service.rb diff --git a/app/controllers/api/v1/statuses/translations_controller.rb b/app/controllers/api/v1/statuses/translations_controller.rb new file mode 100644 index 000000000..540b17d00 --- /dev/null +++ b/app/controllers/api/v1/statuses/translations_controller.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class Api::V1::Statuses::TranslationsController < Api::BaseController + include Authorization + + before_action -> { doorkeeper_authorize! :read, :'read:statuses' } + before_action :set_status + before_action :set_translation + + rescue_from TranslationService::NotConfiguredError, with: :not_found + rescue_from TranslationService::UnexpectedResponseError, TranslationService::QuotaExceededError, TranslationService::TooManyRequestsError, with: :service_unavailable + + def create + render json: @translation, serializer: REST::TranslationSerializer + end + + private + + def set_status + @status = Status.find(params[:status_id]) + authorize @status, :show? + rescue Mastodon::NotPermittedError + not_found + end + + def set_translation + @translation = TranslateStatusService.new.call(@status, content_locale) + end +end diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 32a4f1f85..4ae1b21e0 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -34,6 +34,11 @@ export const STATUS_FETCH_SOURCE_REQUEST = 'STATUS_FETCH_SOURCE_REQUEST'; export const STATUS_FETCH_SOURCE_SUCCESS = 'STATUS_FETCH_SOURCE_SUCCESS'; export const STATUS_FETCH_SOURCE_FAIL = 'STATUS_FETCH_SOURCE_FAIL'; +export const STATUS_TRANSLATE_REQUEST = 'STATUS_TRANSLATE_REQUEST'; +export const STATUS_TRANSLATE_SUCCESS = 'STATUS_TRANSLATE_SUCCESS'; +export const STATUS_TRANSLATE_FAIL = 'STATUS_TRANSLATE_FAIL'; +export const STATUS_TRANSLATE_UNDO = 'STATUS_TRANSLATE_UNDO'; + export function fetchStatusRequest(id, skipLoading) { return { type: STATUS_FETCH_REQUEST, @@ -309,4 +314,36 @@ export function toggleStatusCollapse(id, isCollapsed) { id, isCollapsed, }; -} +}; + +export const translateStatus = id => (dispatch, getState) => { + dispatch(translateStatusRequest(id)); + + api(getState).post(`/api/v1/statuses/${id}/translate`).then(response => { + dispatch(translateStatusSuccess(id, response.data)); + }).catch(error => { + dispatch(translateStatusFail(id, error)); + }); +}; + +export const translateStatusRequest = id => ({ + type: STATUS_TRANSLATE_REQUEST, + id, +}); + +export const translateStatusSuccess = (id, translation) => ({ + type: STATUS_TRANSLATE_SUCCESS, + id, + translation, +}); + +export const translateStatusFail = (id, error) => ({ + type: STATUS_TRANSLATE_FAIL, + id, + error, +}); + +export const undoStatusTranslation = id => ({ + type: STATUS_TRANSLATE_UNDO, + id, +}); diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 6fc132bf5..0d3b51f07 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -85,6 +85,7 @@ class Status extends ImmutablePureComponent { onHeightChange: PropTypes.func, onToggleHidden: PropTypes.func, onToggleCollapsed: PropTypes.func, + onTranslate: PropTypes.func, muted: PropTypes.bool, hidden: PropTypes.bool, unread: PropTypes.bool, @@ -171,6 +172,10 @@ class Status extends ImmutablePureComponent { this.props.onToggleCollapsed(this._properStatus(), isCollapsed); } + handleTranslate = () => { + this.props.onTranslate(this._properStatus()); + } + renderLoadingMediaGallery () { return
; } @@ -512,7 +517,16 @@ class Status extends ImmutablePureComponent {
- + {media} diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 724165ada..c8f7bc095 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -1,7 +1,7 @@ import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; +import { FormattedMessage, injectIntl } from 'react-intl'; import Permalink from './permalink'; import classnames from 'classnames'; import PollContainer from 'mastodon/containers/poll_container'; @@ -10,7 +10,8 @@ import { autoPlayGif } from 'mastodon/initial_state'; const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) -export default class StatusContent extends React.PureComponent { +export default @injectIntl +class StatusContent extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -21,9 +22,11 @@ export default class StatusContent extends React.PureComponent { expanded: PropTypes.bool, showThread: PropTypes.bool, onExpandedToggle: PropTypes.func, + onTranslate: PropTypes.func, onClick: PropTypes.func, collapsable: PropTypes.bool, onCollapsedToggle: PropTypes.func, + intl: PropTypes.object, }; state = { @@ -163,20 +166,26 @@ export default class StatusContent extends React.PureComponent { } } + handleTranslate = () => { + this.props.onTranslate(); + } + setRef = (c) => { this.node = c; } render () { - const { status } = this.props; + const { status, intl } = this.props; const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); + const renderTranslate = this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && intl.locale !== status.get('language'); + const languageNames = new Intl.DisplayNames([intl.locale], { type: 'language' }); - const content = { __html: status.get('contentHtml') }; + const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') }; - const lang = status.get('language'); + const lang = status.get('translation') ? intl.locale : status.get('language'); const classNames = classnames('status__content', { 'status__content--with-action': this.props.onClick && this.context.router, 'status__content--with-spoiler': status.get('spoiler_text').length > 0, @@ -195,6 +204,12 @@ export default class StatusContent extends React.PureComponent { ); + const translateButton = ( + + ); + if (status.get('spoiler_text').length > 0) { let mentionsPlaceholder = ''; @@ -223,7 +238,7 @@ export default class StatusContent extends React.PureComponent {
{!hidden && !!status.get('poll') && } - + {!hidden && renderTranslate && translateButton} {renderViewThread && showThreadButton}
); @@ -233,7 +248,7 @@ export default class StatusContent extends React.PureComponent {
{!!status.get('poll') && } - + {renderTranslate && translateButton} {renderViewThread && showThreadButton}
, ]; @@ -249,7 +264,7 @@ export default class StatusContent extends React.PureComponent {
{!!status.get('poll') && } - + {renderTranslate && translateButton} {renderViewThread && showThreadButton}
); diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.js index 28698b082..9280a6ee3 100644 --- a/app/javascript/mastodon/containers/status_container.js +++ b/app/javascript/mastodon/containers/status_container.js @@ -25,6 +25,8 @@ import { revealStatus, toggleStatusCollapse, editStatus, + translateStatus, + undoStatusTranslation, } from '../actions/statuses'; import { unmuteAccount, @@ -150,6 +152,14 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ dispatch(editStatus(status.get('id'), history)); }, + onTranslate (status) { + if (status.get('translation')) { + dispatch(undoStatusTranslation(status.get('id'))); + } else { + dispatch(translateStatus(status.get('id'))); + } + }, + onDirect (account, router) { dispatch(directCompose(account, router)); }, diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 5c43c2038..320a847f7 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -37,6 +37,7 @@ class DetailedStatus extends ImmutablePureComponent { onOpenMedia: PropTypes.func.isRequired, onOpenVideo: PropTypes.func.isRequired, onToggleHidden: PropTypes.func.isRequired, + onTranslate: PropTypes.func.isRequired, measureHeight: PropTypes.bool, onHeightChange: PropTypes.func, domain: PropTypes.string.isRequired, @@ -103,6 +104,11 @@ class DetailedStatus extends ImmutablePureComponent { window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes'); } + handleTranslate = () => { + const { onTranslate, status } = this.props; + onTranslate(status); + } + render () { const status = (this.props.status && this.props.status.get('reblog')) ? this.props.status.get('reblog') : this.props.status; const outerStyle = { boxSizing: 'border-box' }; @@ -260,7 +266,12 @@ class DetailedStatus extends ImmutablePureComponent { - + {media} diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 4d7f24834..5ff7e060e 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -32,6 +32,8 @@ import { editStatus, hideStatus, revealStatus, + translateStatus, + undoStatusTranslation, } from '../../actions/statuses'; import { unblockAccount, @@ -339,6 +341,16 @@ class Status extends ImmutablePureComponent { } } + handleTranslate = status => { + const { dispatch } = this.props; + + if (status.get('translation')) { + dispatch(undoStatusTranslation(status.get('id'))); + } else { + dispatch(translateStatus(status.get('id'))); + } + } + handleBlockClick = (status) => { const { dispatch } = this.props; const account = status.get('account'); @@ -558,6 +570,7 @@ class Status extends ImmutablePureComponent { onOpenVideo={this.handleOpenVideo} onOpenMedia={this.handleOpenMedia} onToggleHidden={this.handleToggleHidden} + onTranslate={this.handleTranslate} domain={domain} showMedia={this.state.showMedia} onToggleMediaVisibility={this.handleToggleMediaVisibility} diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 53dec9585..7efb49d85 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -13,6 +13,8 @@ import { STATUS_REVEAL, STATUS_HIDE, STATUS_COLLAPSE, + STATUS_TRANSLATE_SUCCESS, + STATUS_TRANSLATE_UNDO, } from '../actions/statuses'; import { TIMELINE_DELETE } from '../actions/timelines'; import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer'; @@ -77,6 +79,10 @@ export default function statuses(state = initialState, action) { return state.setIn([action.id, 'collapsed'], action.isCollapsed); case TIMELINE_DELETE: return deleteStatus(state, action.id, action.references); + case STATUS_TRANSLATE_SUCCESS: + return state.setIn([action.id, 'translation'], fromJS(action.translation)); + case STATUS_TRANSLATE_UNDO: + return state.deleteIn([action.id, 'translation']); default: return state; } diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb new file mode 100644 index 000000000..526e26ae5 --- /dev/null +++ b/app/lib/translation_service.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class TranslationService + class Error < StandardError; end + class NotConfiguredError < Error; end + class TooManyRequestsError < Error; end + class QuotaExceededError < Error; end + class UnexpectedResponseError < Error; end + + def self.configured + if ENV['DEEPL_API_KEY'].present? + TranslationService::DeepL.new(ENV.fetch('DEEPL_PLAN', 'free'), ENV['DEEPL_API_KEY']) + elsif ENV['LIBRE_TRANSLATE_ENDPOINT'].present? + TranslationService::LibreTranslate.new(ENV['LIBRE_TRANSLATE_ENDPOINT'], ENV['LIBRE_TRANSLATE_API_KEY']) + else + raise NotConfiguredError + end + end + + def translate(_text, _source_language, _target_language) + raise NotImplementedError + end +end diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb new file mode 100644 index 000000000..89ccf01e5 --- /dev/null +++ b/app/lib/translation_service/deepl.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +class TranslationService::DeepL < TranslationService + include JsonLdHelper + + def initialize(plan, api_key) + super() + + @plan = plan + @api_key = api_key + end + + def translate(text, source_language, target_language) + request(text, source_language, target_language).perform do |res| + case res.code + when 429 + raise TooManyRequestsError + when 456 + raise QuotaExceededError + when 200...300 + transform_response(res.body_with_limit) + else + raise UnexpectedResponseError + end + end + end + + private + + def request(text, source_language, target_language) + req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language.upcase, target_lang: target_language, tag_handling: 'html' }) + req.add_headers('Authorization': "DeepL-Auth-Key #{@api_key}") + req + end + + def endpoint_url + if @plan == 'free' + 'https://api-free.deepl.com/v2/translate' + else + 'https://api.deepl.com/v2/translate' + end + end + + def transform_response(str) + json = Oj.load(str, mode: :strict) + + raise UnexpectedResponseError unless json.is_a?(Hash) + + Translation.new(text: json.dig('translations', 0, 'text'), detected_source_language: json.dig('translations', 0, 'detected_source_language')&.downcase) + rescue Oj::ParseError + raise UnexpectedResponseError + end +end diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb new file mode 100644 index 000000000..66acdeed7 --- /dev/null +++ b/app/lib/translation_service/libre_translate.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +class TranslationService::LibreTranslate < TranslationService + def initialize(base_url, api_key) + super() + + @base_url = base_url + @api_key = api_key + end + + def translate(text, source_language, target_language) + request(text, source_language, target_language).perform do |res| + case res.code + when 429 + raise TooManyRequestsError + when 403 + raise QuotaExceededError + when 200...300 + transform_response(res.body_with_limit, source_language) + else + raise UnexpectedResponseError + end + end + end + + private + + def request(text, source_language, target_language) + req = Request.new(:post, "#{@base_url}/translate", body: Oj.dump(q: text, source: source_language, target: target_language, format: 'html', api_key: @api_key)) + req.add_headers('Content-Type': 'application/json') + req + end + + def transform_response(str, source_language) + json = Oj.load(str, mode: :strict) + + raise UnexpectedResponseError unless json.is_a?(Hash) + + Translation.new(text: json['translatedText'], detected_source_language: source_language) + rescue Oj::ParseError + raise UnexpectedResponseError + end +end diff --git a/app/lib/translation_service/translation.rb b/app/lib/translation_service/translation.rb new file mode 100644 index 000000000..a55b82574 --- /dev/null +++ b/app/lib/translation_service/translation.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +class TranslationService::Translation < ActiveModelSerializers::Model + attributes :text, :detected_source_language +end diff --git a/app/serializers/rest/translation_serializer.rb b/app/serializers/rest/translation_serializer.rb new file mode 100644 index 000000000..a06f23f32 --- /dev/null +++ b/app/serializers/rest/translation_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::TranslationSerializer < ActiveModel::Serializer + attributes :content, :detected_source_language + + def content + object.text + end +end diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb new file mode 100644 index 000000000..b375226be --- /dev/null +++ b/app/services/translate_status_service.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class TranslateStatusService < BaseService + CACHE_TTL = 1.day.freeze + + def call(status, target_language) + raise Mastodon::NotPermittedError unless status.public_visibility? || status.unlisted_visibility? + + @status = status + @target_language = target_language + + Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@status.text, @status.language, @target_language) } + end + + private + + def translation_backend + TranslationService.configured + end + + def content_hash + Digest::SHA256.base64digest(@status.text) + end +end diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb index 3e5a55617..a361cb0ec 100644 --- a/config/initializers/inflections.rb +++ b/config/initializers/inflections.rb @@ -25,6 +25,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.acronym 'REST' inflect.acronym 'URL' inflect.acronym 'ASCII' + inflect.acronym 'DeepL' inflect.singular 'data', 'data' end diff --git a/config/routes.rb b/config/routes.rb index 13a4a1618..9491c5177 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -393,6 +393,8 @@ Rails.application.routes.draw do resource :history, only: :show resource :source, only: :show + + post :translate, to: 'translations#create' end member do From 0c99c6c3df7882e4a5f6df5ad17e2823211158c0 Mon Sep 17 00:00:00 2001 From: Daniel Jakots Date: Fri, 23 Sep 2022 18:11:34 -0400 Subject: [PATCH 182/280] Update Node to 16.17.1 (#19224) See https://nodejs.org/en/blog/vulnerability/september-2022-security-releases/ for the details. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7757bd0e4..42869d5de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ SHELL ["/bin/bash", "-c"] RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections # Install Node v16 (LTS) -ENV NODE_VER="16.16.0" +ENV NODE_VER="16.17.1" RUN ARCH= && \ dpkgArch="$(dpkg --print-architecture)" && \ case "${dpkgArch##*-}" in \ From 85890bc80fe622744f838b8f1ebdfa9278cb3d2b Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 24 Sep 2022 07:41:01 +0200 Subject: [PATCH 183/280] Fix crash in FetchRemoteKeyService (#19225) Fix regression from #19212 --- app/services/activitypub/fetch_remote_key_service.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb index fe8f60b55..32e82b47a 100644 --- a/app/services/activitypub/fetch_remote_key_service.rb +++ b/app/services/activitypub/fetch_remote_key_service.rb @@ -12,7 +12,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService if prefetched_body.nil? if id @json = fetch_resource_without_id_validation(uri) - if person? + if actor_type? @json = fetch_resource(@json['id'], true) elsif uri != @json['id'] raise Error, "Fetched URI #{uri} has wrong id #{@json['id']}" @@ -27,7 +27,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService raise Error, "Unable to fetch key JSON at #{uri}" if @json.nil? raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?(@json) raise Error, "Unexpected object type for key #{uri}" unless expected_type? - return find_actor(@json['id'], @json, suppress_errors) if person? + return find_actor(@json['id'], @json, suppress_errors) if actor_type? @owner = fetch_resource(owner_uri, true) @@ -51,10 +51,10 @@ class ActivityPub::FetchRemoteKeyService < BaseService end def expected_type? - actor? || public_key? + actor_type? || public_key? end - def actor? + def actor_type? equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) end From 7165e89362167eea79f3ab0d0251d56b300dd150 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 24 Sep 2022 08:33:27 +0200 Subject: [PATCH 184/280] Add tests to ActivityPub::FetchRemoteKeyService (#19226) --- .../fetch_remote_key_service_spec.rb | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 spec/services/activitypub/fetch_remote_key_service_spec.rb diff --git a/spec/services/activitypub/fetch_remote_key_service_spec.rb b/spec/services/activitypub/fetch_remote_key_service_spec.rb new file mode 100644 index 000000000..3186c4270 --- /dev/null +++ b/spec/services/activitypub/fetch_remote_key_service_spec.rb @@ -0,0 +1,83 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::FetchRemoteKeyService, type: :service do + subject { ActivityPub::FetchRemoteKeyService.new } + + let(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + + let(:public_key_pem) do + "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu3L4vnpNLzVH31MeWI39\n4F0wKeJFsLDAsNXGeOu0QF2x+h1zLWZw/agqD2R3JPU9/kaDJGPIV2Sn5zLyUA9S\n6swCCMOtn7BBR9g9sucgXJmUFB0tACH2QSgHywMAybGfmSb3LsEMNKsGJ9VsvYoh\n8lDET6X4Pyw+ZJU0/OLo/41q9w+OrGtlsTm/PuPIeXnxa6BLqnDaxC+4IcjG/FiP\nahNCTINl/1F/TgSSDZ4Taf4U9XFEIFw8wmgploELozzIzKq+t8nhQYkgAkt64euW\npva3qL5KD1mTIZQEP+LZvh3s2WHrLi3fhbdRuwQ2c0KkJA2oSTFPDpqqbPGZ3Qvu\nHQIDAQAB\n-----END PUBLIC KEY-----\n" + end + + let(:public_key_id) { 'https://example.com/alice#main-key' } + + let(:key_json) do + { + id: public_key_id, + owner: 'https://example.com/alice', + publicKeyPem: public_key_pem, + } + end + + let(:actor_public_key) { key_json } + + let(:actor) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + 'https://w3id.org/security/v1', + ], + id: 'https://example.com/alice', + type: 'Person', + preferredUsername: 'alice', + name: 'Alice', + summary: 'Foo bar', + inbox: 'http://example.com/alice/inbox', + publicKey: actor_public_key, + } + end + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + describe '#call' do + let(:account) { subject.call(public_key_id, id: false) } + + context 'when the key is a sub-object from the actor' do + before do + stub_request(:get, public_key_id).to_return(body: Oj.dump(actor)) + end + + it 'returns the expected account' do + expect(account.uri).to eq 'https://example.com/alice' + end + end + + context 'when the key is a separate document' do + let(:public_key_id) { 'https://example.com/alice-public-key.json' } + + before do + stub_request(:get, public_key_id).to_return(body: Oj.dump(key_json.merge({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }))) + end + + it 'returns the expected account' do + expect(account.uri).to eq 'https://example.com/alice' + end + end + + context 'when the key and owner do not match' do + let(:public_key_id) { 'https://example.com/fake-public-key.json' } + let(:actor_public_key) { 'https://example.com/alice-public-key.json' } + + before do + stub_request(:get, public_key_id).to_return(body: Oj.dump(key_json.merge({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }))) + end + + it 'returns the nil' do + expect(account).to be_nil + end + end + end +end From be05e6a37d2cfdeb8434ec2f2a0ed4526f3142ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 24 Sep 2022 19:37:14 +0900 Subject: [PATCH 185/280] Bump sidekiq from 6.5.6 to 6.5.7 (#19210) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.6 to 6.5.7. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.6...v6.5.7) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ae43ce254..ff9db24d1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -608,7 +608,7 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) semantic_range (3.0.0) - sidekiq (6.5.6) + sidekiq (6.5.7) connection_pool (>= 2.2.5) rack (~> 2.0) redis (>= 4.5.0, < 5) From bec214d090719ef98639072967ea6a22829c8eae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 24 Sep 2022 19:38:46 +0900 Subject: [PATCH 186/280] Bump httplog from 1.5.0 to 1.6.0 (#19192) Bumps [httplog](https://github.com/trusche/httplog) from 1.5.0 to 1.6.0. - [Release notes](https://github.com/trusche/httplog/releases) - [Changelog](https://github.com/trusche/httplog/blob/master/CHANGELOG.md) - [Commits](https://github.com/trusche/httplog/commits) --- updated-dependencies: - dependency-name: httplog dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index d90c17f14..c18118916 100644 --- a/Gemfile +++ b/Gemfile @@ -55,7 +55,7 @@ gem 'redis-namespace', '~> 1.9' gem 'htmlentities', '~> 4.3' gem 'http', '~> 5.1' gem 'http_accept_language', '~> 2.1' -gem 'httplog', '~> 1.5.0' +gem 'httplog', '~> 1.6.0' gem 'idn-ruby', require: 'idn' gem 'kaminari', '~> 1.2' gem 'link_header', '~> 0.0' diff --git a/Gemfile.lock b/Gemfile.lock index ff9db24d1..aa41bea0b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -309,8 +309,8 @@ GEM http-form_data (2.3.0) http_accept_language (2.1.1) httpclient (2.8.3) - httplog (1.5.0) - rack (>= 1.0) + httplog (1.6.0) + rack (>= 2.0) rainbow (>= 2.0.0) i18n (1.12.0) concurrent-ruby (~> 1.0) @@ -775,7 +775,7 @@ DEPENDENCIES htmlentities (~> 4.3) http (~> 5.1) http_accept_language (~> 2.1) - httplog (~> 1.5.0) + httplog (~> 1.6.0) i18n-tasks (~> 1.0) idn-ruby json-ld From 911951e776beb951512d7ea282e369dc342f2ff2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 24 Sep 2022 19:55:44 +0900 Subject: [PATCH 187/280] Bump connection_pool from 2.2.5 to 2.3.0 (#19202) Bumps [connection_pool](https://github.com/mperham/connection_pool) from 2.2.5 to 2.3.0. - [Release notes](https://github.com/mperham/connection_pool/releases) - [Changelog](https://github.com/mperham/connection_pool/blob/main/Changes.md) - [Commits](https://github.com/mperham/connection_pool/compare/v2.2.5...v2.3.0) --- updated-dependencies: - dependency-name: connection_pool dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index aa41bea0b..425970a52 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -175,7 +175,7 @@ GEM coderay (1.1.3) color_diff (0.1) concurrent-ruby (1.1.10) - connection_pool (2.2.5) + connection_pool (2.3.0) cose (1.2.1) cbor (~> 0.5.9) openssl-signature_algorithm (~> 1.0) From 3e0999cd1139d638332d62129dbf0b37263802fd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 24 Sep 2022 17:28:54 +0200 Subject: [PATCH 188/280] New Crowdin updates (#19208) * New translations en.json (Chinese Traditional) * New translations en.json (Spanish, Argentina) * New translations en.json (Galician) * New translations en.json (Ukrainian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Spanish) * New translations en.json (Arabic) * New translations en.json (Greek) * New translations en.json (Italian) * New translations en.json (Portuguese) * New translations en.json (Hungarian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Icelandic) * New translations en.json (Albanian) * New translations en.json (Ukrainian) * New translations en.json (Russian) * New translations en.json (Spanish) * New translations en.json (Slovenian) * New translations en.json (Turkish) * New translations en.json (Latvian) * New translations en.json (Thai) * New translations en.json (Czech) * New translations en.json (Czech) * New translations en.yml (Ukrainian) * New translations en.json (Sinhala) * New translations en.yml (Sinhala) * New translations simple_form.en.yml (Sinhala) * New translations en.json (Vietnamese) * New translations en.json (German) * New translations activerecord.en.yml (Galician) * New translations en.json (Thai) * New translations en.yml (Thai) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.json (Sinhala) * New translations en.json (Kurmanji (Kurdish)) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * New translations en.yml (Polish) * New translations simple_form.en.yml (Polish) * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 3 ++ app/javascript/mastodon/locales/ar.json | 19 ++++++----- app/javascript/mastodon/locales/ast.json | 3 ++ app/javascript/mastodon/locales/bg.json | 3 ++ app/javascript/mastodon/locales/bn.json | 3 ++ app/javascript/mastodon/locales/br.json | 3 ++ app/javascript/mastodon/locales/ca.json | 3 ++ app/javascript/mastodon/locales/ckb.json | 3 ++ app/javascript/mastodon/locales/co.json | 3 ++ app/javascript/mastodon/locales/cs.json | 11 ++++--- app/javascript/mastodon/locales/cy.json | 3 ++ app/javascript/mastodon/locales/da.json | 3 ++ app/javascript/mastodon/locales/de.json | 11 ++++--- .../mastodon/locales/defaultMessages.json | 33 +++++++++++++++++++ app/javascript/mastodon/locales/el.json | 5 ++- app/javascript/mastodon/locales/en-GB.json | 3 ++ app/javascript/mastodon/locales/en.json | 3 ++ app/javascript/mastodon/locales/eo.json | 3 ++ app/javascript/mastodon/locales/es-AR.json | 9 +++-- app/javascript/mastodon/locales/es-MX.json | 3 ++ app/javascript/mastodon/locales/es.json | 11 ++++--- app/javascript/mastodon/locales/et.json | 3 ++ app/javascript/mastodon/locales/eu.json | 3 ++ app/javascript/mastodon/locales/fa.json | 3 ++ app/javascript/mastodon/locales/fi.json | 3 ++ app/javascript/mastodon/locales/fr.json | 3 ++ app/javascript/mastodon/locales/fy.json | 3 ++ app/javascript/mastodon/locales/ga.json | 3 ++ app/javascript/mastodon/locales/gd.json | 3 ++ app/javascript/mastodon/locales/gl.json | 11 ++++--- app/javascript/mastodon/locales/he.json | 3 ++ app/javascript/mastodon/locales/hi.json | 3 ++ app/javascript/mastodon/locales/hr.json | 3 ++ app/javascript/mastodon/locales/hu.json | 11 ++++--- 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/is.json | 11 ++++--- app/javascript/mastodon/locales/it.json | 11 ++++--- app/javascript/mastodon/locales/ja.json | 3 ++ app/javascript/mastodon/locales/ka.json | 3 ++ app/javascript/mastodon/locales/kab.json | 3 ++ app/javascript/mastodon/locales/kk.json | 3 ++ app/javascript/mastodon/locales/kn.json | 3 ++ app/javascript/mastodon/locales/ko.json | 3 ++ app/javascript/mastodon/locales/ku.json | 13 +++++--- app/javascript/mastodon/locales/kw.json | 3 ++ app/javascript/mastodon/locales/lt.json | 3 ++ app/javascript/mastodon/locales/lv.json | 11 ++++--- app/javascript/mastodon/locales/mk.json | 3 ++ app/javascript/mastodon/locales/ml.json | 3 ++ app/javascript/mastodon/locales/mr.json | 3 ++ app/javascript/mastodon/locales/ms.json | 3 ++ app/javascript/mastodon/locales/nl.json | 3 ++ app/javascript/mastodon/locales/nn.json | 3 ++ app/javascript/mastodon/locales/no.json | 3 ++ app/javascript/mastodon/locales/oc.json | 3 ++ app/javascript/mastodon/locales/pa.json | 3 ++ app/javascript/mastodon/locales/pl.json | 11 ++++--- app/javascript/mastodon/locales/pt-BR.json | 3 ++ app/javascript/mastodon/locales/pt-PT.json | 11 ++++--- app/javascript/mastodon/locales/ro.json | 3 ++ app/javascript/mastodon/locales/ru.json | 11 ++++--- app/javascript/mastodon/locales/sa.json | 3 ++ app/javascript/mastodon/locales/sc.json | 3 ++ app/javascript/mastodon/locales/si.json | 29 ++++++++-------- app/javascript/mastodon/locales/sk.json | 3 ++ app/javascript/mastodon/locales/sl.json | 11 ++++--- app/javascript/mastodon/locales/sq.json | 11 ++++--- 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/szl.json | 3 ++ app/javascript/mastodon/locales/ta.json | 3 ++ app/javascript/mastodon/locales/tai.json | 3 ++ app/javascript/mastodon/locales/te.json | 3 ++ app/javascript/mastodon/locales/th.json | 11 ++++--- app/javascript/mastodon/locales/tr.json | 11 ++++--- app/javascript/mastodon/locales/tt.json | 3 ++ app/javascript/mastodon/locales/ug.json | 3 ++ app/javascript/mastodon/locales/uk.json | 11 ++++--- app/javascript/mastodon/locales/ur.json | 3 ++ app/javascript/mastodon/locales/vi.json | 13 +++++--- app/javascript/mastodon/locales/zgh.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 | 11 ++++--- config/locales/pl.yml | 10 ++++++ config/locales/si.yml | 8 ++--- config/locales/simple_form.pl.yml | 1 + config/locales/simple_form.si.yml | 2 +- config/locales/th.yml | 2 ++ config/locales/uk.yml | 7 +++- config/locales/vi.yml | 2 +- 94 files changed, 419 insertions(+), 110 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 384e6feb2..8e2361941 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 65ec25be9..81c1f8104 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -60,7 +60,7 @@ "alert.unexpected.title": "المعذرة!", "announcement.announcement": "إعلان", "attachments_list.unprocessed": "(غير معالَج)", - "audio.hide": "Hide audio", + "audio.hide": "إخفاء المقطع الصوتي", "autosuggest_hashtag.per_week": "{count} في الأسبوع", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "bundle_column_error.body": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", @@ -204,7 +204,7 @@ "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.settings_link": "صفحة الإعدادات", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", @@ -348,7 +348,7 @@ "notification.update": "عدّلَ {name} منشورًا", "notifications.clear": "امسح الإخطارات", "notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "التقارير الجديدة:", "notifications.column_settings.admin.sign_up": "التسجيلات الجديدة:", "notifications.column_settings.alert": "إشعارات سطح المكتب", "notifications.column_settings.favourite": "المُفَضَّلة:", @@ -455,8 +455,8 @@ "report.unfollow": "إلغاء متابعة @{name}", "report.unfollow_explanation": "أنت تتابع هذا الحساب، لإزالة مَنشوراته من تغذيَتِكَ الرئيسة ألغ متابعته.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", + "report_notification.categories.other": "آخر", + "report_notification.categories.spam": "مزعج", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "ابحث", @@ -490,7 +490,7 @@ "status.favourite": "أضف إلى المفضلة", "status.filter": "Filter this post", "status.filtered": "مُصفّى", - "status.hide": "Hide toot", + "status.hide": "اخف التبويق", "status.history.created": "أنشأه {name} {date}", "status.history.edited": "عدله {name} {date}", "status.load_more": "حمّل المزيد", @@ -514,17 +514,20 @@ "status.report": "ابلِغ عن @{name}", "status.sensitive_warning": "محتوى حساس", "status.share": "مشاركة", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "إظهار على أي حال", "status.show_less": "اعرض أقلّ", "status.show_less_all": "طي الكل", "status.show_more": "أظهر المزيد", "status.show_more_all": "توسيع الكل", + "status.show_original": "Show original", "status.show_thread": "الكشف عن المحادثة", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "حفظ التغييرات", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "إلغاء الاقتراح", "suggestions.header": "يمكن أن يهمك…", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 547956317..5c128ef20 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -519,7 +519,10 @@ "status.show_less_all": "Amosar menos en too", "status.show_more": "Amosar más", "status.show_more_all": "Amosar más en too", + "status.show_original": "Show original", "status.show_thread": "Amosar el filu", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Non disponible", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Desfixar del perfil", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 4135ff3cf..84007763c 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -519,7 +519,10 @@ "status.show_less_all": "Покажи по-малко за всички", "status.show_more": "Покажи повече", "status.show_more_all": "Покажи повече за всички", + "status.show_original": "Show original", "status.show_thread": "Показване на тема", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Не е налично", "status.unmute_conversation": "Раззаглушаване на разговор", "status.unpin": "Разкачане от профил", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index dfa718ae0..388b2a814 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -519,7 +519,10 @@ "status.show_less_all": "সবগুলোতে কম দেখতে", "status.show_more": "আরো দেখাতে", "status.show_more_all": "সবগুলোতে আরো দেখতে", + "status.show_original": "Show original", "status.show_thread": "আলোচনা দেখতে", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "পাওয়া যাচ্ছে না", "status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে", "status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index f3d19f9a2..a1f703cb2 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -519,7 +519,10 @@ "status.show_less_all": "Diskouez nebeutoc'h evit an holl", "status.show_more": "Diskouez muioc'h", "status.show_more_all": "Diskouez miuoc'h evit an holl", + "status.show_original": "Show original", "status.show_thread": "Diskouez ar gaozeadenn", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Dihegerz", "status.unmute_conversation": "Diguzhat ar gaozeadenn", "status.unpin": "Dispilhennañ eus ar profil", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 32faea99a..81a69c4b0 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -519,7 +519,10 @@ "status.show_less_all": "Mostrar-ne menys per a tot", "status.show_more": "Mostrar-ne més", "status.show_more_all": "Mostrar-ne més per a tot", + "status.show_original": "Show original", "status.show_thread": "Mostra el fil", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 1497e31a3..638a58a12 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -519,7 +519,10 @@ "status.show_less_all": "هەمووی بچووک بکەوە", "status.show_more": "زیاتر نیشان بدە", "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی", + "status.show_original": "Show original", "status.show_thread": "نیشاندانی گفتوگۆ", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "بەردەست نیە", "status.unmute_conversation": "گفتوگۆی بێدەنگ", "status.unpin": "لە سەرەوە لایبە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index efc584c66..7075784bc 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -519,7 +519,10 @@ "status.show_less_all": "Ripiegà tuttu", "status.show_more": "Slibrà", "status.show_more_all": "Slibrà tuttu", + "status.show_original": "Show original", "status.show_thread": "Vede u filu", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Micca dispunibule", "status.unmute_conversation": "Ùn piattà più a cunversazione", "status.unpin": "Spuntarulà da u prufile", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index a5c512c0f..e3d2f30e8 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -24,7 +24,7 @@ "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", "account.joined": "Založen {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Změnit odebírané jazyky", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", "account.media": "Média", @@ -519,13 +519,16 @@ "status.show_less_all": "Zobrazit méně pro všechny", "status.show_more": "Zobrazit více", "status.show_more_all": "Zobrazit více pro všechny", + "status.show_original": "Show original", "status.show_thread": "Zobrazit vlákno", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Po změně se objeví pouze příspěvky ve vybraných jazycích na vašem domě a zobrazí se seznam časových os. Pro příjem příspěvků ve všech jazycích nevyber žádnou.", + "subscribed_languages.save": "Uložit změny", + "subscribed_languages.target": "Změnit odebírané jazyky na {target}", "suggestions.dismiss": "Odmítnout návrh", "suggestions.header": "Mohlo by vás zajímat…", "tabs_bar.federated_timeline": "Federovaná", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index de59b5ac5..c777dcd6a 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -519,7 +519,10 @@ "status.show_less_all": "Dangos llai i bawb", "status.show_more": "Dangos mwy", "status.show_more_all": "Dangos mwy i bawb", + "status.show_original": "Show original", "status.show_thread": "Dangos edefyn", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Dim ar gael", "status.unmute_conversation": "Dad-dawelu sgwrs", "status.unpin": "Dadbinio o'r proffil", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index ffa6fdd15..92dddbfe2 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -519,7 +519,10 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mere", "status.show_more_all": "Vis mere for alle", + "status.show_original": "Show original", "status.show_thread": "Vis tråd", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index a8b841a26..b0a4ca5fa 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -24,7 +24,7 @@ "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined": "Beigetreten am {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Abonnierte Sprachen ändern", "account.link_verified_on": "Diesem Profil folgt niemand", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", @@ -519,13 +519,16 @@ "status.show_less_all": "Alle Inhaltswarnungen zuklappen", "status.show_more": "Mehr anzeigen", "status.show_more_all": "Alle Inhaltswarnungen aufklappen", + "status.show_original": "Show original", "status.show_thread": "Zeige Konversation", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung von Konversation aufheben", "status.unpin": "Vom Profil lösen", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Nur Beiträge in ausgewählten Sprachen werden nach der Änderung auf deiner Startseite und den Listen angezeigt. Wähle keine aus, um Beiträge in allen Sprachen zu erhalten.", + "subscribed_languages.save": "Änderungen speichern", + "subscribed_languages.target": "Abonnierte Sprachen für {target} ändern", "suggestions.dismiss": "Empfehlung ausblenden", "suggestions.header": "Du bist vielleicht interessiert an…", "tabs_bar.federated_timeline": "Föderation", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 4c208c3cb..6b27f7877 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -653,6 +653,18 @@ "defaultMessage": "Read more", "id": "status.read_more" }, + { + "defaultMessage": "Translated from {lang}", + "id": "status.translated_from" + }, + { + "defaultMessage": "Show original", + "id": "status.show_original" + }, + { + "defaultMessage": "Translate", + "id": "status.translate" + }, { "defaultMessage": "Show more", "id": "status.show_more" @@ -3022,6 +3034,27 @@ ], "path": "app/javascript/mastodon/features/report/comment.json" }, + { + "descriptors": [ + { + "defaultMessage": "Public", + "id": "privacy.public.short" + }, + { + "defaultMessage": "Unlisted", + "id": "privacy.unlisted.short" + }, + { + "defaultMessage": "Followers-only", + "id": "privacy.private.short" + }, + { + "defaultMessage": "Mentioned people only", + "id": "privacy.direct.short" + } + ], + "path": "app/javascript/mastodon/features/report/components/status_check_box.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index d90455b51..2a32dbcc6 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -519,12 +519,15 @@ "status.show_less_all": "Δείξε λιγότερα για όλα", "status.show_more": "Δείξε περισσότερα", "status.show_more_all": "Δείξε περισσότερα για όλα", + "status.show_original": "Show original", "status.show_thread": "Εμφάνιση νήματος", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Μη διαθέσιμα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "Αποθήκευση αλλαγών", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Απόρριψη πρότασης", "suggestions.header": "Ίσως να ενδιαφέρεσαι για…", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index eab3be805..7dc245a38 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 4f515b321..c7b31e6f4 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 0363f6715..bb770767c 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -519,7 +519,10 @@ "status.show_less_all": "Montri malpli ĉiun", "status.show_more": "Montri pli", "status.show_more_all": "Montri pli ĉiun", + "status.show_original": "Show original", "status.show_thread": "Montri la mesaĝaron", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nedisponebla", "status.unmute_conversation": "Malsilentigi la konversacion", "status.unpin": "Depingli de profilo", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 8a7335ac0..6246462bb 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -519,13 +519,16 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", + "status.show_original": "Show original", "status.show_thread": "Mostrar hilo", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Después del cambio, sólo los mensajes en los idiomas seleccionados aparecerán en tu línea temporal Principal y en las líneas de tiempo de lista. No seleccionés ningún idioma para poder recibir mensajes en todos los idiomas.", + "subscribed_languages.save": "Guardar cambios", + "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 2bcc3a554..f9823a8a4 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -519,7 +519,10 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", + "status.show_original": "Show original", "status.show_thread": "Mostrar hilo", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index ade9480d7..68cd972ab 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -24,7 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -519,13 +519,16 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", + "status.show_original": "Show original", "status.show_thread": "Mostrar hilo", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Sólo los mensajes en los idiomas seleccionados aparecerán en su inicio y otras líneas de tiempo después del cambio. Seleccione ninguno para recibir mensajes en todos los idiomas.", + "subscribed_languages.save": "Guardar cambios", + "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 3eaaa12ec..86dc95495 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -519,7 +519,10 @@ "status.show_less_all": "Näita vähem kõigile", "status.show_more": "Näita veel", "status.show_more_all": "Näita enam kõigile", + "status.show_original": "Show original", "status.show_thread": "Kuva lõim", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Pole saadaval", "status.unmute_conversation": "Ära vaigista vestlust", "status.unpin": "Kinnita profiililt lahti", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 5b72eeb2d..77259248c 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -519,7 +519,10 @@ "status.show_less_all": "Erakutsi denetarik gutxiago", "status.show_more": "Erakutsi gehiago", "status.show_more_all": "Erakutsi denetarik gehiago", + "status.show_original": "Show original", "status.show_thread": "Erakutsi haria", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ez eskuragarri", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index f3e6fbc72..7046b9a14 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -519,7 +519,10 @@ "status.show_less_all": "نمایش کمتر همه", "status.show_more": "نمایش بیشتر", "status.show_more_all": "نمایش بیشتر همه", + "status.show_original": "Show original", "status.show_thread": "نمایش رشته", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "ناموجود", "status.unmute_conversation": "رفع خموشی گفت‌وگو", "status.unpin": "برداشتن سنجاق از نمایه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 6920093f4..1cbea9808 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -519,7 +519,10 @@ "status.show_less_all": "Näytä vähemmän kaikista", "status.show_more": "Näytä lisää", "status.show_more_all": "Näytä lisää kaikista", + "status.show_original": "Show original", "status.show_thread": "Näytä ketju", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 9cbbc3c03..3172f6c72 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -519,7 +519,10 @@ "status.show_less_all": "Tout replier", "status.show_more": "Déplier", "status.show_more_all": "Tout déplier", + "status.show_original": "Show original", "status.show_thread": "Montrer le fil", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 1e49a7e17..b47dc584c 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -519,7 +519,10 @@ "status.show_less_all": "Foar alles minder sjen litte", "status.show_more": "Mear sjen litte", "status.show_more_all": "Foar alles mear sjen litte", + "status.show_original": "Show original", "status.show_thread": "Petear sjen litte", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Net beskikber", "status.unmute_conversation": "Petear net mear negearre", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index e9e1e96d4..91f802f70 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Díphionnáil de do phróifíl", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 7f17df51e..93a53f960 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -519,7 +519,10 @@ "status.show_less_all": "Seall nas lugha dhen a h-uile", "status.show_more": "Seall barrachd dheth", "status.show_more_all": "Seall barrachd dhen a h-uile", + "status.show_original": "Show original", "status.show_thread": "Seall an snàithlean", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 215956d49..6b7cf5bed 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -24,7 +24,7 @@ "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", "account.joined": "Uníuse {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Modificar os idiomas subscritos", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", "account.media": "Multimedia", @@ -519,13 +519,16 @@ "status.show_less_all": "Amosar menos para todos", "status.show_more": "Amosar máis", "status.show_more_all": "Amosar máis para todos", + "status.show_original": "Show original", "status.show_thread": "Amosar fío", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Ao facer cambios só as publicacións nos idiomas seleccionados aparecerán nas túas cronoloxías. Non elixas ningún para poder ver publicacións en tódolos idiomas.", + "subscribed_languages.save": "Gardar cambios", + "subscribed_languages.target": "Cambiar a subscrición a idiomas para {target}", "suggestions.dismiss": "Rexeitar suxestión", "suggestions.header": "Poderíache interesar…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 9c60de8ca..a27e0e827 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -519,7 +519,10 @@ "status.show_less_all": "להציג פחות מהכל", "status.show_more": "הראה יותר", "status.show_more_all": "להציג יותר מהכל", + "status.show_original": "Show original", "status.show_thread": "הצג כחלק מפתיל", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 6fab737f9..9c2b9e618 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "और दिखाएँ", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "अनुपलब्ध", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 94ff9d3a3..ebb102b44 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Pokaži više", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Prikaži nit", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nije dostupno", "status.unmute_conversation": "Poništi utišavanje razgovora", "status.unpin": "Otkvači s profila", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index cc3602956..c2679b35a 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -24,7 +24,7 @@ "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", "account.joined": "Csatlakozott {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Feliratkozott nyelvek módosítása", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", "account.media": "Média", @@ -519,13 +519,16 @@ "status.show_less_all": "Kevesebbet mindenhol", "status.show_more": "Többet", "status.show_more_all": "Többet mindenhol", + "status.show_original": "Show original", "status.show_thread": "Szál mutatása", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőlapon és az idővonalakon. Ha egy sincs kiválasztva, akkor minden nyelven megjelennek a bejegyzések.", + "subscribed_languages.save": "Változások mentése", + "subscribed_languages.target": "Feliratkozott nyelvek módosítása a következőnél: {target}", "suggestions.dismiss": "Javaslat elvetése", "suggestions.header": "Esetleg érdekelhet…", "tabs_bar.federated_timeline": "Föderációs", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index dc1bec6e4..44fd15696 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -519,7 +519,10 @@ "status.show_less_all": "Թաքցնել բոլոր նախազգուշացնումները", "status.show_more": "Աւելին", "status.show_more_all": "Ցուցադրել բոլոր նախազգուշացնումները", + "status.show_original": "Show original", "status.show_thread": "Բացել շղթան", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Անհասանելի", "status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը", "status.unpin": "Հանել անձնական էջից", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 8b615038b..986e06c24 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -519,7 +519,10 @@ "status.show_less_all": "Tampilkan lebih sedikit", "status.show_more": "Tampilkan semua", "status.show_more_all": "Tampilkan lebih banyak", + "status.show_original": "Show original", "status.show_thread": "Tampilkan utas", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Tak tersedia", "status.unmute_conversation": "Bunyikan percakapan", "status.unpin": "Hapus sematan dari profil", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 312ef70ae..8fe2f7c8c 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -519,7 +519,10 @@ "status.show_less_all": "Montrez min por omno", "status.show_more": "Montrar plue", "status.show_more_all": "Montrez pluse por omno", + "status.show_original": "Show original", "status.show_thread": "Montrez postaro", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", "status.unpin": "Depinglagez de profilo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index aa46b748b..73eafad06 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -24,7 +24,7 @@ "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", "account.joined": "Gerðist þátttakandi {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Breyta tungumálum í áskrift", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", "account.media": "Myndskrár", @@ -519,13 +519,16 @@ "status.show_less_all": "Sýna minna fyrir allt", "status.show_more": "Sýna meira", "status.show_more_all": "Sýna meira fyrir allt", + "status.show_original": "Show original", "status.show_thread": "Birta þráð", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Einungis færslur á völdum tungumálum munu birtast á upphafssíðu og tímalínum þínum eftir þessa breytingu. Veldu ekkert til að sjá færslur á öllum tungumálum.", + "subscribed_languages.save": "Vista breytingar", + "subscribed_languages.target": "Breyta tungumálum í áskrift fyrir {target}", "suggestions.dismiss": "Hafna tillögu", "suggestions.header": "Þú gætir haft áhuga á…", "tabs_bar.federated_timeline": "Sameiginlegt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 28e9902a8..92fe389e4 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -24,7 +24,7 @@ "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.joined": "Su questa istanza dal {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Cambia le lingue di cui ricevere i post", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", "account.media": "Media", @@ -519,13 +519,16 @@ "status.show_less_all": "Mostra meno per tutti", "status.show_more": "Mostra di più", "status.show_more_all": "Mostra di più per tutti", + "status.show_original": "Show original", "status.show_thread": "Mostra conversazione", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Solo i messaggi nelle lingue selezionate appariranno nella tua home e nelle timeline dopo il cambiamento. Seleziona nessuno per ricevere messaggi in tutte le lingue.", + "subscribed_languages.save": "Salva modifiche", + "subscribed_languages.target": "Cambia le lingue di cui ricevere i post per {target}", "suggestions.dismiss": "Elimina suggerimento", "suggestions.header": "Ti potrebbe interessare…", "tabs_bar.federated_timeline": "Federazione", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 5de2a7abd..1e49517f9 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -519,7 +519,10 @@ "status.show_less_all": "全て隠す", "status.show_more": "もっと見る", "status.show_more_all": "全て見る", + "status.show_original": "Show original", "status.show_thread": "スレッドを表示", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 8021d8be2..f10c97e1c 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -519,7 +519,10 @@ "status.show_less_all": "აჩვენე ნაკლები ყველაზე", "status.show_more": "აჩვენე მეტი", "status.show_more_all": "აჩვენე მეტი ყველაზე", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "საუბარზე გაჩუმების მოშორება", "status.unpin": "პროფილიდან პინის მოშორება", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 78f41c636..644dff4b5 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -519,7 +519,10 @@ "status.show_less_all": "Semẓi akk tisuffγin", "status.show_more": "Ssken-d ugar", "status.show_more_all": "Ẓerr ugar lebda", + "status.show_original": "Show original", "status.show_thread": "Ssken-d lxiḍ", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ulac-it", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 29b6aa16a..5e77a5959 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -519,7 +519,10 @@ "status.show_less_all": "Бәрін аздап көрсет", "status.show_more": "Толығырақ", "status.show_more_all": "Бәрін толығымен", + "status.show_original": "Show original", "status.show_thread": "Желіні көрсет", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Қолжетімді емес", "status.unmute_conversation": "Пікірталасты үнсіз қылмау", "status.unpin": "Профильден алып тастау", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index ed97bac69..15cafe8f9 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index e17582189..8dc82a3a8 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -519,7 +519,10 @@ "status.show_less_all": "모두 접기", "status.show_more": "더 보기", "status.show_more_all": "모두 펼치기", + "status.show_original": "Show original", "status.show_thread": "글타래 보기", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 105c45a2d..6b5128f4d 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -24,9 +24,9 @@ "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", "account.joined": "Di {date} de tevlî bû", - "account.languages": "Change subscribed languages", + "account.languages": "Zimanên beşdarbûyî biguherîne", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", - "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.", + "account.locked_info": "Rewşa vê ajimêrê wek kilîtkirî hatiye sazkirin. Xwediyê ajimêrê, bi destan dinirxîne şopandinê dinirxîne.", "account.media": "Medya", "account.mention": "Qal @{name} bike", "account.moved_to": "{name} hate livandin bo:", @@ -519,13 +519,16 @@ "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", "status.show_more": "Bêtir nîşan bide", "status.show_more_all": "Bêtir nîşan bide bo hemûyan", + "status.show_original": "Show original", "status.show_thread": "Mijarê nîşan bide", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Tenê şandiyên bi zimanên hilbijartî wê di rojev û demnameya te de wê xuya bibe û piştî guhertinê. Ji bo wergirtina şandiyan di hemû zimanan de ne yek hilbijêre.", + "subscribed_languages.save": "Guhertinan tomar bike", + "subscribed_languages.target": "Zimanên beşdarbûyî biguherîne ji bo {target}", "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 6b901f70d..34f72a365 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -519,7 +519,10 @@ "status.show_less_all": "Diskwedhes le rag puptra", "status.show_more": "Diskwedhes moy", "status.show_more_all": "Diskwedhes moy rag puptra", + "status.show_original": "Show original", "status.show_thread": "Diskwedhes neusen", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ankavadow", "status.unmute_conversation": "Antawhe kesklapp", "status.unpin": "Anfastya a brofil", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 0be6c4e68..e01e35714 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 3b538799e..b018c8d49 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -24,7 +24,7 @@ "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", "account.joined": "Pievienojās {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Mainīt abonētās valodas", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", "account.media": "Multivide", @@ -519,13 +519,16 @@ "status.show_less_all": "Rādīt mazāk visiem", "status.show_more": "Rādīt vairāk", "status.show_more_all": "Rādīt vairāk visiem", + "status.show_original": "Show original", "status.show_thread": "Rādīt tematu", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Pēc izmaiņu veikšanas tavā mājas lapā un saraksta laika skalās tiks rādītas tikai ziņas atlasītajās valodās. Neatlasi nevienu, lai saņemtu ziņas visās valodās.", + "subscribed_languages.save": "Saglabāt izmaiņas", + "subscribed_languages.target": "Mainīt abonētās valodas priekš {target}", "suggestions.dismiss": "Noraidīt ieteikumu", "suggestions.header": "Jūs varētu interesēt arī…", "tabs_bar.federated_timeline": "Federētā", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 2c001c37c..916a8e98a 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 446901372..12196c123 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "കൂടുതകൽ കാണിക്കുക", "status.show_more_all": "എല്ലാവർക്കുമായി കൂടുതൽ കാണിക്കുക", + "status.show_original": "Show original", "status.show_thread": "ത്രെഡ് കാണിക്കുക", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "ലഭ്യമല്ല", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 8c7f0ec11..6f120c6fb 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 4e50ef465..4dd6ddb40 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -519,7 +519,10 @@ "status.show_less_all": "Tunjukkan kurang untuk semua", "status.show_more": "Tunjukkan lebih", "status.show_more_all": "Tunjukkan lebih untuk semua", + "status.show_original": "Show original", "status.show_thread": "Tunjuk bebenang", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Tidak tersedia", "status.unmute_conversation": "Nyahbisukan perbualan", "status.unpin": "Nyahsemat daripada profil", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 7831310d8..eab9adbc7 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -519,7 +519,10 @@ "status.show_less_all": "Alles minder tonen", "status.show_more": "Meer tonen", "status.show_more_all": "Alles meer tonen", + "status.show_original": "Show original", "status.show_thread": "Gesprek tonen", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 785662bb5..810f23be6 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -519,7 +519,10 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis meir", "status.show_more_all": "Vis meir for alle", + "status.show_original": "Show original", "status.show_thread": "Vis tråd", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ikkje tilgjengeleg", "status.unmute_conversation": "Opphev målbinding av samtalen", "status.unpin": "Løys frå profil", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 29df0b2d4..7d00b48a7 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -519,7 +519,10 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mer", "status.show_more_all": "Vis mer for alle", + "status.show_original": "Show original", "status.show_thread": "Vis tråden", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 66ef6c76f..9ae4445fd 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -519,7 +519,10 @@ "status.show_less_all": "Los tornar plegar totes", "status.show_more": "Desplegar", "status.show_more_all": "Los desplegar totes", + "status.show_original": "Show original", "status.show_thread": "Mostrar lo fil", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Pas disponible", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index bde5388c6..f8e7597e5 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index d68c2aaa1..617c81a68 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -24,7 +24,7 @@ "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined": "Dołączył(a) {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Zmień subskrybowane języki", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", "account.media": "Zawartość multimedialna", @@ -519,13 +519,16 @@ "status.show_less_all": "Zwiń wszystkie", "status.show_more": "Rozwiń", "status.show_more_all": "Rozwiń wszystkie", + "status.show_original": "Show original", "status.show_thread": "Pokaż wątek", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Tylko posty w wybranych językach pojawią się na Twojej osi czasu po zmianie. Nie wybieraj żadnego języka aby otrzymywać posty we wszystkich językach.", + "subscribed_languages.save": "Zapisz zmiany", + "subscribed_languages.target": "Zmień subskrybowane języki dla {target}", "suggestions.dismiss": "Odrzuć sugestię", "suggestions.header": "Może Cię zainteresować…", "tabs_bar.federated_timeline": "Globalne", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index ba349524e..5e0f9058f 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -519,7 +519,10 @@ "status.show_less_all": "Mostrar menos em tudo", "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais em tudo", + "status.show_original": "Show original", "status.show_thread": "Mostrar conversa", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index d03e66572..7f3058165 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -24,7 +24,7 @@ "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", "account.joined": "Ingressou em {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Alterar idiomas subscritos", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", "account.media": "Média", @@ -519,13 +519,16 @@ "status.show_less_all": "Mostrar menos para todas", "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais para todas", + "status.show_original": "Show original", "status.show_thread": "Mostrar conversa", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Após a alteração, apenas as publicações nos idiomas selecionados aparecerão na sua página inicial e listas. Não selecione nenhuma para receber publicações de todos os idiomas.", + "subscribed_languages.save": "Guardar alterações", + "subscribed_languages.target": "Alterar idiomas subscritos para {target}", "suggestions.dismiss": "Dispensar a sugestão", "suggestions.header": "Tu podes estar interessado em…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 626a8a1ed..9ef230567 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -519,7 +519,10 @@ "status.show_less_all": "Arată mai puțin pentru toți", "status.show_more": "Arată mai mult", "status.show_more_all": "Arată mai mult pentru toți", + "status.show_original": "Show original", "status.show_thread": "Arată discuția", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Indisponibil", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 51e2d6159..957f64b85 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -24,7 +24,7 @@ "account.follows_you": "Подписан(а) на вас", "account.hide_reblogs": "Скрыть продвижения от @{name}", "account.joined": "Зарегистрирован(а) с {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Изменить языки подписки", "account.link_verified_on": "Владение этой ссылкой было проверено {date}", "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.", "account.media": "Медиа", @@ -519,13 +519,16 @@ "status.show_less_all": "Свернуть все спойлеры в ветке", "status.show_more": "Развернуть", "status.show_more_all": "Развернуть все спойлеры в ветке", + "status.show_original": "Show original", "status.show_thread": "Показать обсуждение", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Невозможно отобразить файл", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Посты только на выбранных языках будут отображаться на вашей домашней странице и в списке лент после изменения. Выберите «Нет», чтобы получать посты на всех языках.", + "subscribed_languages.save": "Сохранить изменения", + "subscribed_languages.target": "Изменить языки подписки для {target}", "suggestions.dismiss": "Удалить предложение", "suggestions.header": "Вам может быть интересно…", "tabs_bar.federated_timeline": "Глобальная", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index e3037bde0..11d2b9e2f 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 4264eaacf..1623bacdc 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -519,7 +519,10 @@ "status.show_less_all": "Ammustra·nde prus pagu pro totus", "status.show_more": "Ammustra·nde prus", "status.show_more_all": "Ammustra·nde prus pro totus", + "status.show_original": "Show original", "status.show_thread": "Ammustra su tema", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No est a disponimentu", "status.unmute_conversation": "Torra a ativare s'arresonada", "status.unpin": "Boga dae pitzu de su profilu", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 3a26e967a..a1205e3b4 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -60,7 +60,7 @@ "alert.unexpected.title": "අපොයි!", "announcement.announcement": "නිවේදනය", "attachments_list.unprocessed": "(සැකසුම් නොකළ)", - "audio.hide": "Hide audio", + "audio.hide": "හඬපටය සඟවන්න", "autosuggest_hashtag.per_week": "සතියකට {count}", "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට ඔබට {combo} එබිය හැක", "bundle_column_error.body": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", @@ -224,11 +224,11 @@ "getting_started.developers": "සංවර්ධකයින්", "getting_started.directory": "පැතිකඩ නාමාවලිය", "getting_started.documentation": "ප්‍රලේඛනය", - "getting_started.heading": "ඇරඹේ", + "getting_started.heading": "පටන් ගන්න", "getting_started.invite": "මිනිසුන්ට ආරාධනය", "getting_started.open_source_notice": "Mastodon යනු විවෘත කේත මෘදුකාංගයකි. ඔබට GitHub හි {github}ට දායක වීමට හෝ ගැටළු වාර්තා කිරීමට හැකිය.", "getting_started.security": "ගිණුමේ සැකසුම්", - "getting_started.terms": "සේවාවේ කොන්දේසි", + "getting_started.terms": "සේවාවේ නියම", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", @@ -249,7 +249,7 @@ "intervals.full.days": "{number, plural, one {# දින} other {# දින}}", "intervals.full.hours": "{number, plural, one {# පැය} other {# පැය}}", "intervals.full.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}}", - "keyboard_shortcuts.back": "ආපසු සැරිසැරීමට", + "keyboard_shortcuts.back": "ආපසු යාත්‍රණය", "keyboard_shortcuts.blocked": "අවහිර කළ පරිශීලක ලැයිස්තුව විවෘත කිරීමට", "keyboard_shortcuts.boost": "වැඩි කිරීමට", "keyboard_shortcuts.column": "එක් තීරුවක තත්ත්වය නාභිගත කිරීමට", @@ -268,18 +268,18 @@ "keyboard_shortcuts.local": "දේශීය කාලරේඛාව විවෘත කිරීමට", "keyboard_shortcuts.mention": "කතුවරයා සඳහන් කිරීමට", "keyboard_shortcuts.muted": "නිශ්ශබ්ද පරිශීලක ලැයිස්තුව විවෘත කිරීමට", - "keyboard_shortcuts.my_profile": "ඔබගේ පැතිකඩ විවෘත කිරීමට", + "keyboard_shortcuts.my_profile": "ඔබගේ පැතිකඩ අරින්න", "keyboard_shortcuts.notifications": "දැනුම්දීම් තීරුව විවෘත කිරීමට", - "keyboard_shortcuts.open_media": "මාධ්‍ය විවෘත කිරීමට", + "keyboard_shortcuts.open_media": "මාධ්‍ය අරින්න", "keyboard_shortcuts.pinned": "පින් කළ මෙවලම් ලැයිස්තුව විවෘත කිරීමට", - "keyboard_shortcuts.profile": "කර්තෘගේ පැතිකඩ විවෘත කිරීමට", + "keyboard_shortcuts.profile": "කතෘගේ පැතිකඩ අරින්න", "keyboard_shortcuts.reply": "පිළිතුරු දීමට", "keyboard_shortcuts.requests": "පහත ඉල්ලීම් ලැයිස්තුව විවෘත කිරීමට", "keyboard_shortcuts.search": "සෙවුම් අවධානය යොමු කිරීමට", "keyboard_shortcuts.spoilers": "CW ක්ෂේත්‍රය පෙන්වීමට/සැඟවීමට", - "keyboard_shortcuts.start": "\"ආරම්භ කරන්න\" තීරුව විවෘත කිරීමට", + "keyboard_shortcuts.start": "\"පටන් ගන්න\" තීරුව අරින්න", "keyboard_shortcuts.toggle_hidden": "CW පිටුපස පෙළ පෙන්වීමට/සැඟවීමට", - "keyboard_shortcuts.toggle_sensitivity": "මාධ්‍ය පෙන්වීමට/සැඟවීමට", + "keyboard_shortcuts.toggle_sensitivity": "මාධ්‍ය පෙන්වන්න/සඟවන්න", "keyboard_shortcuts.toot": "අලුත්ම ටූට් එකක් පටන් ගන්න", "keyboard_shortcuts.unfocus": "අවධානය යොමු නොකිරීමට textarea/search රචනා කරන්න", "keyboard_shortcuts.up": "ලැයිස්තුවේ ඉහළට යාමට", @@ -428,7 +428,7 @@ "report.category.title_status": "තැපැල්", "report.close": "අහවරයි", "report.comment.title": "අප දැනගත යුතු යැයි ඔබ සිතන තවත් යමක් තිබේද?", - "report.forward": "{target}වෙත යොමු කරන්න", + "report.forward": "{target} වෙත හරවන්න", "report.forward_hint": "ගිණුම වෙනත් සේවාදායකයකින්. වාර්තාවේ නිර්නාමික පිටපතක් එතනටත් එවන්න?", "report.mute": "නිහඬ", "report.mute_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට තවමත් ඔබව අනුගමනය කිරීමට සහ ඔබේ පළ කිරීම් දැකීමට හැකි අතර ඒවා නිශ්ශබ්ද කර ඇති බව නොදැනේ.", @@ -519,12 +519,15 @@ "status.show_less_all": "සියල්ල අඩුවෙන් පෙන්වන්න", "status.show_more": "තවත් පෙන්වන්න", "status.show_more_all": "සියල්ල වැඩියෙන් පෙන්වන්න", + "status.show_original": "Show original", "status.show_thread": "නූල් පෙන්වන්න", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "නොතිබේ", "status.unmute_conversation": "සංවාදය නොනිහඬ", "status.unpin": "පැතිකඩෙන් ගළවන්න", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "වෙනස්කම් සුරකින්න", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "යෝජනාව ඉවතලන්න", "suggestions.header": "ඔබ…ගැන උනන්දු විය හැකිය", @@ -544,7 +547,7 @@ "timeline_hint.resources.statuses": "පරණ ලිපි", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "දැන් ප්‍රවණතාවය", - "ui.beforeunload": "ඔබ Mastodon හැර ගියහොත් ඔබේ කෙටුම්පත නැති වනු ඇත.", + "ui.beforeunload": "ඔබ මාස්ටඩන් හැර ගියහොත් කටුපිටපත අහිමි වේ.", "units.short.billion": "{count}බී", "units.short.million": "{count}එම්", "units.short.thousand": "{count}කි", @@ -554,7 +557,7 @@ "upload_error.poll": "මත විමසුම් සමඟ ගොනු යෙදීමට ඉඩ නොදේ.", "upload_form.audio_description": "නොඇසෙන අය සඳහා විස්තර කරන්න", "upload_form.description": "දෘශ්‍යාබාධිතයන් සඳහා විස්තර කරන්න", - "upload_form.description_missing": "විස්තරයක් එක් කර නැත", + "upload_form.description_missing": "සවිස්තරයක් නැත", "upload_form.edit": "සංස්කරණය", "upload_form.thumbnail": "සිඟිති රුව වෙනස් කරන්න", "upload_form.undo": "මකන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 629c93ca9..620b8dfc1 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -519,7 +519,10 @@ "status.show_less_all": "Všetkým ukáž menej", "status.show_more": "Ukáž viac", "status.show_more_all": "Všetkým ukáž viac", + "status.show_original": "Show original", "status.show_thread": "Ukáž diskusné vlákno", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nedostupný/é", "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 1f1f0370f..c4ce59e45 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -24,7 +24,7 @@ "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij izpostavitve od @{name}", "account.joined": "Pridružen/a {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Spremeni naročene jezike", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", "account.media": "Mediji", @@ -519,13 +519,16 @@ "status.show_less_all": "Prikaži manj za vse", "status.show_more": "Prikaži več", "status.show_more_all": "Prikaži več za vse", + "status.show_original": "Show original", "status.show_thread": "Prikaži objavo", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Po spremembi bodo na vaši domači in seznamski časovnici prikazane objave samo v izbranih jezikih.", + "subscribed_languages.save": "Shrani spremembe", + "subscribed_languages.target": "Spremeni naročene jezike za {target}", "suggestions.dismiss": "Zavrni predlog", "suggestions.header": "Morda bi vas zanimalo…", "tabs_bar.federated_timeline": "Združeno", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 0a485aaae..4be47edc6 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -24,7 +24,7 @@ "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", "account.joined": "U bë pjesë më {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Ndryshoni gjuhë pajtimesh", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", "account.media": "Media", @@ -519,13 +519,16 @@ "status.show_less_all": "Shfaq më pak për të tërë", "status.show_more": "Shfaq më tepër", "status.show_more_all": "Shfaq më tepër për të tërë", + "status.show_original": "Show original", "status.show_thread": "Shfaq rrjedhën", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Pas ndryshimit, te kreu juaj dhe te rrjedha kohore liste do të shfaqen vetëm postime në gjuhët e përzgjedhura. Që të merrni postime në krejt gjuhë, mos përzgjidhni gjë.", + "subscribed_languages.save": "Ruaji ndryshimet", + "subscribed_languages.target": "Ndryshoni gjuhë pajtimesh për {target}", "suggestions.dismiss": "Mos e merr parasysh sugjerimin", "suggestions.header": "Mund t’ju interesonte…", "tabs_bar.federated_timeline": "E federuar", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 2487c27f9..1bb6218a3 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Prikaži više", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Uključi prepisku", "status.unpin": "Otkači sa profila", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 9683cafff..5fa8b1b89 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -519,7 +519,10 @@ "status.show_less_all": "Прикажи мање за све", "status.show_more": "Прикажи више", "status.show_more_all": "Прикажи више за све", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Није доступно", "status.unmute_conversation": "Укључи преписку", "status.unpin": "Откачи са налога", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index c9ae1b08c..78ff55ceb 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -519,7 +519,10 @@ "status.show_less_all": "Visa mindre för alla", "status.show_more": "Visa mer", "status.show_more_all": "Visa mer för alla", + "status.show_original": "Show original", "status.show_thread": "Visa tråd", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ej tillgängligt", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index bde5388c6..f8e7597e5 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 1d4531d89..54ada2e22 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -519,7 +519,10 @@ "status.show_less_all": "அனைத்தையும் குறைவாக காட்டு", "status.show_more": "மேலும் காட்ட", "status.show_more_all": "அனைவருக்கும் மேலும் காட்டு", + "status.show_original": "Show original", "status.show_thread": "நூல் காட்டு", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "கிடைக்கவில்லை", "status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை", "status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 1e5f0ed34..0ffc9e198 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 265a3b484..2ee3052c7 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -519,7 +519,10 @@ "status.show_less_all": "అన్నిటికీ తక్కువ చూపించు", "status.show_more": "ఇంకా చూపించు", "status.show_more_all": "అన్నిటికీ ఇంకా చూపించు", + "status.show_original": "Show original", "status.show_thread": "గొలుసును చూపించు", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 1c25ac049..5ee8a8e3a 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -24,7 +24,7 @@ "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", "account.joined": "เข้าร่วมเมื่อ {date}", - "account.languages": "Change subscribed languages", + "account.languages": "เปลี่ยนภาษาที่บอกรับ", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", "account.media": "สื่อ", @@ -519,13 +519,16 @@ "status.show_less_all": "แสดงน้อยลงทั้งหมด", "status.show_more": "แสดงเพิ่มเติม", "status.show_more_all": "แสดงเพิ่มเติมทั้งหมด", + "status.show_original": "Show original", "status.show_thread": "แสดงกระทู้", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "ไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", "status.unpin": "ถอนหมุดจากโปรไฟล์", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "เฉพาะโพสต์ในภาษาที่เลือกเท่านั้นที่จะปรากฏในเส้นเวลาหน้าแรกและรายการหลังจากการเปลี่ยนแปลง เลือก ไม่มี เพื่อรับโพสต์ในภาษาทั้งหมด", + "subscribed_languages.save": "บันทึกการเปลี่ยนแปลง", + "subscribed_languages.target": "เปลี่ยนภาษาที่บอกรับสำหรับ {target}", "suggestions.dismiss": "ปิดข้อเสนอแนะ", "suggestions.header": "คุณอาจสนใจ…", "tabs_bar.federated_timeline": "ที่ติดต่อกับภายนอก", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 0d8b0e46f..9f581a9f1 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -24,7 +24,7 @@ "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined": "{date} tarihinde katıldı", - "account.languages": "Change subscribed languages", + "account.languages": "Abone olunan dilleri değiştir", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", @@ -519,13 +519,16 @@ "status.show_less_all": "Hepsi için daha az göster", "status.show_more": "Daha fazlasını göster", "status.show_more_all": "Hepsi için daha fazla göster", + "status.show_original": "Show original", "status.show_thread": "Konuyu göster", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Değişiklikten sonra ana akışınızda sadece seçili dillerdeki gönderiler görüntülenecek ve zaman akışları listelenecektir. Tüm dillerde gönderiler için hiçbirini seçin.", + "subscribed_languages.save": "Değişiklikleri kaydet", + "subscribed_languages.target": "{target} abone olduğu dilleri değiştir", "suggestions.dismiss": "Öneriyi görmezden gel", "suggestions.header": "Şuna ilgi duyuyor olabilirsiniz…", "tabs_bar.federated_timeline": "Federe", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 71e68e3c4..7bfa44882 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Күбрәк күрсәтү", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index bde5388c6..f8e7597e5 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 271a6f330..5fb6030d5 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -24,7 +24,7 @@ "account.follows_you": "Підписані на вас", "account.hide_reblogs": "Сховати поширення від @{name}", "account.joined": "Долучилися {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Змінити підписані мови", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", @@ -519,13 +519,16 @@ "status.show_less_all": "Показувати менше для всіх", "status.show_more": "Розгорнути", "status.show_more_all": "Показувати більше для всіх", + "status.show_original": "Show original", "status.show_thread": "Показати ланцюжок", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Лише дописи вибраними мовами з'являтимуться на вашій домівці та у списку стрічок після змін. Виберіть «none», щоб отримувати повідомлення всіма мовами.", + "subscribed_languages.save": "Зберегти зміни", + "subscribed_languages.target": "Змінити підписані мови для {target}", "suggestions.dismiss": "Відхилити пропозицію", "suggestions.header": "Вас може зацікавити…", "tabs_bar.federated_timeline": "Глобальна", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index a9ee2e877..2460e36a0 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index ff2ba7e85..707a4a285 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -24,7 +24,7 @@ "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.joined": "Đã tham gia {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Đổi ngôn ngữ mong muốn", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Media", @@ -423,7 +423,7 @@ "report.categories.spam": "Spam", "report.categories.violation": "Vi phạm quy tắc máy chủ", "report.category.subtitle": "Chọn mục gần khớp nhất", - "report.category.title": "Nói với họ chuyện gì xảy ra với {type}", + "report.category.title": "Có vấn đề gì với {type}", "report.category.title_account": "người dùng", "report.category.title_status": "tút", "report.close": "Xong", @@ -519,13 +519,16 @@ "status.show_less_all": "Thu gọn toàn bộ", "status.show_more": "Xem thêm", "status.show_more_all": "Hiển thị tất cả", + "status.show_original": "Show original", "status.show_thread": "Xem chuỗi tút này", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Chỉ các tút đăng bằng các ngôn ngữ đã chọn mới được xuất hiện trên bảng tin của bạn. Không chọn gì cả để đọc tút đăng bằng mọi ngôn ngữ.", + "subscribed_languages.save": "Lưu thay đổi", + "subscribed_languages.target": "Đổi ngôn ngữ mong muốn cho {target}", "suggestions.dismiss": "Tắt đề xuất", "suggestions.header": "Có thể bạn quan tâm…", "tabs_bar.federated_timeline": "Thế giới", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 4983489ab..b83ef1786 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -519,7 +519,10 @@ "status.show_less_all": "ⵙⵎⴰⵍ ⴷⵔⵓⵙ ⵉ ⵎⴰⵕⵕⴰ", "status.show_more": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ", "status.show_more_all": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ ⵉ ⵎⴰⵕⵕⴰ", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 243d127f4..9be030663 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -519,7 +519,10 @@ "status.show_less_all": "隐藏全部内容", "status.show_more": "显示更多", "status.show_more_all": "显示全部内容", + "status.show_original": "Show original", "status.show_thread": "显示全部对话", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 3b2dde692..47b21d523 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -519,7 +519,10 @@ "status.show_less_all": "全部收起", "status.show_more": "展開", "status.show_more_all": "全部展開", + "status.show_original": "Show original", "status.show_thread": "顯示討論串", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "對話解除靜音", "status.unpin": "解除置頂", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 62facfca2..200f31f66 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -24,7 +24,7 @@ "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", "account.joined": "加入於 {date}", - "account.languages": "Change subscribed languages", + "account.languages": "變更訂閱的語言", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", "account.media": "媒體", @@ -519,13 +519,16 @@ "status.show_less_all": "減少顯示這類嘟文", "status.show_more": "顯示更多", "status.show_more_all": "顯示更多這類嘟文", + "status.show_original": "Show original", "status.show_thread": "顯示討論串", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "從個人檔案頁面解除釘選", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "僅選定語言的嘟文才會出現在您的首頁上,並在變更後列出時間軸。選取「無」以接收所有語言的嘟文。", + "subscribed_languages.save": "儲存變更", + "subscribed_languages.target": "變更 {target} 的訂閱語言", "suggestions.dismiss": "關閉建議", "suggestions.header": "您可能對這些東西有興趣…", "tabs_bar.federated_timeline": "聯邦宇宙", diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 99169454e..4251f5510 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1246,6 +1246,16 @@ pl: many: "%{count} słów kluczowych" one: "%{count} słowo kluczowe" other: "%{count} słów kluczowych" + statuses: + few: "%{count} posty" + many: "%{count} postów" + one: "%{count} post" + other: "%{count} postów" + statuses_long: + few: "%{count} ukryte posty" + many: "%{count} ukrytych postów" + one: "%{count} ukryty post" + other: "%{count} postów ukrytych" title: Filtry new: save: Zapisz jako nowy filtr diff --git a/config/locales/si.yml b/config/locales/si.yml index fded19b17..40909ab12 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -39,7 +39,7 @@ si: other: තත්ත්වයන් status_count_before: කවුද පළ කළේ tagline: විමධ්‍යගත සමාජ ජාලය - terms: සේවාවේ කොන්දේසි + terms: සේවාවේ නියම unavailable_content: මධ්‍යස්ථ සේවාදායකයන් unavailable_content_description: domain: සේවාදායකය @@ -1156,9 +1156,9 @@ si: expired: කල් ඉකුත් වී ඇත expires_in: '1800': විනාඩි 30 - '21600': හෝරා 6 - '3600': හෝරා 1 - '43200': හෝරා 12 + '21600': පැය 6 + '3600': පැය 1 + '43200': පැය 12 '604800': සති 1 '86400': දවස් 1 expires_in_prompt: කවදාවත් නැහැ diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 91ded57a6..665ac6af1 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -220,6 +220,7 @@ pl: ip: Adres IP severities: no_access: Zablokuj dostęp + sign_up_block: Zablokuj nowe rejestracje sign_up_requires_approval: Ogranicz rejestracje severity: Reguła notification_emails: diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml index aa51438a9..4df9f619b 100644 --- a/config/locales/simple_form.si.yml +++ b/config/locales/simple_form.si.yml @@ -102,7 +102,7 @@ si: labels: account: fields: - name: ලේබලය + name: නම්පත value: අන්තර්ගතය account_alias: acct: පැරණි ගිණුමේ හැසිරවීම diff --git a/config/locales/th.yml b/config/locales/th.yml index b5dd9bc36..be3c24482 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -678,6 +678,7 @@ th: manage_invites: จัดการคำเชิญ manage_invites_description: อนุญาตให้ผู้ใช้เรียกดูและปิดใช้งานลิงก์เชิญ manage_reports: จัดการรายงาน + manage_reports_description: อนุญาตให้ผู้ใช้ตรวจทานรายงานและทำการกระทำการควบคุมกับรายงาน manage_roles: จัดการบทบาท manage_rules: จัดการกฎ manage_rules_description: อนุญาตให้ผู้ใช้เปลี่ยนกฎของเซิร์ฟเวอร์ @@ -687,6 +688,7 @@ th: manage_taxonomies_description: อนุญาตให้ผู้ใช้ตรวจทานเนื้อหาที่กำลังนิยมและอัปเดตการตั้งค่าแฮชแท็ก manage_user_access: จัดการการเข้าถึงของผู้ใช้ manage_users: จัดการผู้ใช้ + manage_users_description: อนุญาตให้ผู้ใช้ดูรายละเอียดของผู้ใช้อื่น ๆ และทำการกระทำการควบคุมกับผู้ใช้ manage_webhooks: จัดการเว็บฮุค manage_webhooks_description: อนุญาตให้ผู้ใช้ตั้งค่าเว็บฮุคสำหรับเหตุการณ์การดูแล view_audit_log: ดูรายการบันทึกการตรวจสอบ diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 18b09369c..d423850c3 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -911,6 +911,11 @@ uk: disallow: Заборонити допис disallow_account: Заборонити автора not_discoverable: Автор не вирішив бути видимим + shared_by: + few: Поділитись або додати в улюблені %{friendly_count} рази + many: Поділитись або додати в улюблені %{friendly_count} разів + one: Поділитись або додати в улюблені один раз + other: Поділитись або додати в улюблені %{friendly_count} рази title: Популярні дописи tags: current_score: Поточний результат %{score} @@ -920,7 +925,7 @@ uk: tag_servers_dimension: Найуживаніші сервери tag_servers_measure: різні сервери tag_uses_measure: всього використань - description_html: Ці хештеґи, які бачить ваш сервер, в даний час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди в даний момент найбільше говорять. Жодні хештеґи публічно не відображаються, допоки ви їх не затвердите. + description_html: Ці хештеґи, які бачить ваш сервер, в цей час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди наразі найбільше говорять. Жодні хештеґи публічно не показуються, доки ви їх не затвердите. listable: Може бути запропоновано not_listable: Не буде запропоновано not_trendable: Не показуватиметься серед популярних diff --git a/config/locales/vi.yml b/config/locales/vi.yml index dfc7623dd..f5fe23795 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -5,7 +5,7 @@ vi: about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!' about_this: Giới thiệu active_count_after: hoạt động - active_footnote: Người dùng hoạt động hàng tháng (MAU) + active_footnote: Người dùng hàng tháng (MAU) administered_by: 'Quản trị viên:' api: API apps: Apps From 5c9abdeff1d0cf3e14d84c5ae298e6a5beccaf18 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 27 Sep 2022 03:08:19 +0200 Subject: [PATCH 189/280] Add retention policy for cached content and media (#19232) --- app/lib/redis_configuration.rb | 6 +- app/lib/vacuum.rb | 3 + .../vacuum/access_tokens_vacuum.rb} | 17 ++++-- app/lib/vacuum/backups_vacuum.rb | 25 +++++++++ app/lib/vacuum/feeds_vacuum.rb | 34 +++++++++++ app/lib/vacuum/media_attachments_vacuum.rb | 40 +++++++++++++ app/lib/vacuum/preview_cards_vacuum.rb | 39 +++++++++++++ app/lib/vacuum/statuses_vacuum.rb | 54 ++++++++++++++++++ app/lib/vacuum/system_keys_vacuum.rb | 13 +++++ app/models/content_retention_policy.rb | 25 +++++++++ app/models/form/admin_settings.rb | 4 ++ app/views/admin/settings/edit.html.haml | 8 ++- .../scheduler/backup_cleanup_scheduler.rb | 17 ------ .../scheduler/feed_cleanup_scheduler.rb | 35 ------------ .../scheduler/media_cleanup_scheduler.rb | 17 ------ app/workers/scheduler/vacuum_scheduler.rb | 56 +++++++++++++++++++ config/locales/simple_form.en.yml | 8 +++ config/settings.yml | 1 + config/sidekiq.yml | 16 +----- spec/fabricators/access_grant_fabricator.rb | 6 ++ spec/fabricators/preview_card_fabricator.rb | 1 + spec/lib/vacuum/access_tokens_vacuum_spec.rb | 33 +++++++++++ spec/lib/vacuum/backups_vacuum_spec.rb | 24 ++++++++ spec/lib/vacuum/feeds_vacuum_spec.rb | 30 ++++++++++ .../vacuum/media_attachments_vacuum_spec.rb | 47 ++++++++++++++++ spec/lib/vacuum/preview_cards_vacuum_spec.rb | 36 ++++++++++++ spec/lib/vacuum/statuses_vacuum_spec.rb | 36 ++++++++++++ spec/lib/vacuum/system_keys_vacuum_spec.rb | 22 ++++++++ .../scheduler/feed_cleanup_scheduler_spec.rb | 26 --------- .../scheduler/media_cleanup_scheduler_spec.rb | 15 ----- 30 files changed, 559 insertions(+), 135 deletions(-) create mode 100644 app/lib/vacuum.rb rename app/{workers/scheduler/doorkeeper_cleanup_scheduler.rb => lib/vacuum/access_tokens_vacuum.rb} (56%) create mode 100644 app/lib/vacuum/backups_vacuum.rb create mode 100644 app/lib/vacuum/feeds_vacuum.rb create mode 100644 app/lib/vacuum/media_attachments_vacuum.rb create mode 100644 app/lib/vacuum/preview_cards_vacuum.rb create mode 100644 app/lib/vacuum/statuses_vacuum.rb create mode 100644 app/lib/vacuum/system_keys_vacuum.rb create mode 100644 app/models/content_retention_policy.rb delete mode 100644 app/workers/scheduler/backup_cleanup_scheduler.rb delete mode 100644 app/workers/scheduler/feed_cleanup_scheduler.rb delete mode 100644 app/workers/scheduler/media_cleanup_scheduler.rb create mode 100644 app/workers/scheduler/vacuum_scheduler.rb create mode 100644 spec/fabricators/access_grant_fabricator.rb create mode 100644 spec/lib/vacuum/access_tokens_vacuum_spec.rb create mode 100644 spec/lib/vacuum/backups_vacuum_spec.rb create mode 100644 spec/lib/vacuum/feeds_vacuum_spec.rb create mode 100644 spec/lib/vacuum/media_attachments_vacuum_spec.rb create mode 100644 spec/lib/vacuum/preview_cards_vacuum_spec.rb create mode 100644 spec/lib/vacuum/statuses_vacuum_spec.rb create mode 100644 spec/lib/vacuum/system_keys_vacuum_spec.rb delete mode 100644 spec/workers/scheduler/feed_cleanup_scheduler_spec.rb delete mode 100644 spec/workers/scheduler/media_cleanup_scheduler_spec.rb diff --git a/app/lib/redis_configuration.rb b/app/lib/redis_configuration.rb index e14d6c8b6..f0e86d985 100644 --- a/app/lib/redis_configuration.rb +++ b/app/lib/redis_configuration.rb @@ -7,9 +7,7 @@ class RedisConfiguration @pool = ConnectionPool.new(size: new_pool_size) { new.connection } end - def with - pool.with { |redis| yield redis } - end + delegate :with, to: :pool def pool @pool ||= establish_pool(pool_size) @@ -17,7 +15,7 @@ class RedisConfiguration def pool_size if Sidekiq.server? - Sidekiq.options[:concurrency] + Sidekiq[:concurrency] else ENV['MAX_THREADS'] || 5 end diff --git a/app/lib/vacuum.rb b/app/lib/vacuum.rb new file mode 100644 index 000000000..9db1ec90b --- /dev/null +++ b/app/lib/vacuum.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +module Vacuum; end diff --git a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb b/app/lib/vacuum/access_tokens_vacuum.rb similarity index 56% rename from app/workers/scheduler/doorkeeper_cleanup_scheduler.rb rename to app/lib/vacuum/access_tokens_vacuum.rb index 9303a352f..4f3878027 100644 --- a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb +++ b/app/lib/vacuum/access_tokens_vacuum.rb @@ -1,13 +1,18 @@ # frozen_string_literal: true -class Scheduler::DoorkeeperCleanupScheduler - include Sidekiq::Worker - - sidekiq_options retry: 0 - +class Vacuum::AccessTokensVacuum def perform + vacuum_revoked_access_tokens! + vacuum_revoked_access_grants! + end + + private + + def vacuum_revoked_access_tokens! Doorkeeper::AccessToken.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all + end + + def vacuum_revoked_access_grants! Doorkeeper::AccessGrant.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all - SystemKey.expired.delete_all end end diff --git a/app/lib/vacuum/backups_vacuum.rb b/app/lib/vacuum/backups_vacuum.rb new file mode 100644 index 000000000..3b83072f3 --- /dev/null +++ b/app/lib/vacuum/backups_vacuum.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class Vacuum::BackupsVacuum + def initialize(retention_period) + @retention_period = retention_period + end + + def perform + vacuum_expired_backups! if retention_period? + end + + private + + def vacuum_expired_backups! + backups_past_retention_period.in_batches.destroy_all + end + + def backups_past_retention_period + Backup.unscoped.where(Backup.arel_table[:created_at].lt(@retention_period.ago)) + end + + def retention_period? + @retention_period.present? + end +end diff --git a/app/lib/vacuum/feeds_vacuum.rb b/app/lib/vacuum/feeds_vacuum.rb new file mode 100644 index 000000000..f46bcf75f --- /dev/null +++ b/app/lib/vacuum/feeds_vacuum.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +class Vacuum::FeedsVacuum + def perform + vacuum_inactive_home_feeds! + vacuum_inactive_list_feeds! + end + + private + + def vacuum_inactive_home_feeds! + inactive_users.select(:id, :account_id).find_in_batches do |users| + feed_manager.clean_feeds!(:home, users.map(&:account_id)) + end + end + + def vacuum_inactive_list_feeds! + inactive_users_lists.select(:id).find_in_batches do |lists| + feed_manager.clean_feeds!(:list, lists.map(&:id)) + end + end + + def inactive_users + User.confirmed.inactive + end + + def inactive_users_lists + List.where(account_id: inactive_users.select(:account_id)) + end + + def feed_manager + FeedManager.instance + end +end diff --git a/app/lib/vacuum/media_attachments_vacuum.rb b/app/lib/vacuum/media_attachments_vacuum.rb new file mode 100644 index 000000000..7fb347ce4 --- /dev/null +++ b/app/lib/vacuum/media_attachments_vacuum.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class Vacuum::MediaAttachmentsVacuum + TTL = 1.day.freeze + + def initialize(retention_period) + @retention_period = retention_period + end + + def perform + vacuum_cached_files! if retention_period? + vacuum_orphaned_records! + end + + private + + def vacuum_cached_files! + media_attachments_past_retention_period.find_each do |media_attachment| + media_attachment.file.destroy + media_attachment.thumbnail.destroy + media_attachment.save + end + end + + def vacuum_orphaned_records! + orphaned_media_attachments.in_batches.destroy_all + end + + def media_attachments_past_retention_period + MediaAttachment.unscoped.remote.cached.where(MediaAttachment.arel_table[:created_at].lt(@retention_period.ago)).where(MediaAttachment.arel_table[:updated_at].lt(@retention_period.ago)) + end + + def orphaned_media_attachments + MediaAttachment.unscoped.unattached.where(MediaAttachment.arel_table[:created_at].lt(TTL.ago)) + end + + def retention_period? + @retention_period.present? + end +end diff --git a/app/lib/vacuum/preview_cards_vacuum.rb b/app/lib/vacuum/preview_cards_vacuum.rb new file mode 100644 index 000000000..84ef100ed --- /dev/null +++ b/app/lib/vacuum/preview_cards_vacuum.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class Vacuum::PreviewCardsVacuum + TTL = 1.day.freeze + + def initialize(retention_period) + @retention_period = retention_period + end + + def perform + vacuum_cached_images! if retention_period? + vacuum_orphaned_records! + end + + private + + def vacuum_cached_images! + preview_cards_past_retention_period.find_each do |preview_card| + preview_card.image.destroy + preview_card.save + end + end + + def vacuum_orphaned_records! + orphaned_preview_cards.in_batches.destroy_all + end + + def preview_cards_past_retention_period + PreviewCard.cached.where(PreviewCard.arel_table[:updated_at].lt(@retention_period.ago)) + end + + def orphaned_preview_cards + PreviewCard.where('NOT EXISTS (SELECT 1 FROM preview_cards_statuses WHERE preview_cards_statuses.preview_card_id = preview_cards.id)').where(PreviewCard.arel_table[:created_at].lt(TTL.ago)) + end + + def retention_period? + @retention_period.present? + end +end diff --git a/app/lib/vacuum/statuses_vacuum.rb b/app/lib/vacuum/statuses_vacuum.rb new file mode 100644 index 000000000..41d6ba270 --- /dev/null +++ b/app/lib/vacuum/statuses_vacuum.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +class Vacuum::StatusesVacuum + include Redisable + + def initialize(retention_period) + @retention_period = retention_period + end + + def perform + vacuum_statuses! if retention_period? + end + + private + + def vacuum_statuses! + statuses_scope.find_in_batches do |statuses| + # Side-effects not covered by foreign keys, such + # as the search index, must be handled first. + + remove_from_account_conversations(statuses) + remove_from_search_index(statuses) + + # Foreign keys take care of most associated records + # for us. Media attachments will be orphaned. + + Status.where(id: statuses.map(&:id)).delete_all + end + end + + def statuses_scope + Status.unscoped.kept.where(account: Account.remote).where(Status.arel_table[:id].lt(retention_period_as_id)).select(:id, :visibility) + end + + def retention_period_as_id + Mastodon::Snowflake.id_at(@retention_period.ago, with_random: false) + end + + def analyze_statuses! + ActiveRecord::Base.connection.execute('ANALYZE statuses') + end + + def remove_from_account_conversations(statuses) + Status.where(id: statuses.select(&:direct_visibility?).map(&:id)).includes(:account, mentions: :account).each(&:unlink_from_conversations) + end + + def remove_from_search_index(statuses) + with_redis { |redis| redis.sadd('chewy:queue:StatusesIndex', statuses.map(&:id)) } if Chewy.enabled? + end + + def retention_period? + @retention_period.present? + end +end diff --git a/app/lib/vacuum/system_keys_vacuum.rb b/app/lib/vacuum/system_keys_vacuum.rb new file mode 100644 index 000000000..ceee2fd16 --- /dev/null +++ b/app/lib/vacuum/system_keys_vacuum.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class Vacuum::SystemKeysVacuum + def perform + vacuum_expired_system_keys! + end + + private + + def vacuum_expired_system_keys! + SystemKey.expired.delete_all + end +end diff --git a/app/models/content_retention_policy.rb b/app/models/content_retention_policy.rb new file mode 100644 index 000000000..b5e922c8c --- /dev/null +++ b/app/models/content_retention_policy.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class ContentRetentionPolicy + def self.current + new + end + + def media_cache_retention_period + retention_period Setting.media_cache_retention_period + end + + def content_cache_retention_period + retention_period Setting.content_cache_retention_period + end + + def backups_retention_period + retention_period Setting.backups_retention_period + end + + private + + def retention_period(value) + value.days if value.is_a?(Integer) && value.positive? + end +end diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 97fabc6ac..3a7150916 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -32,6 +32,9 @@ class Form::AdminSettings show_domain_blocks_rationale noindex require_invite_text + media_cache_retention_period + content_cache_retention_period + backups_retention_period ).freeze BOOLEAN_KEYS = %i( @@ -64,6 +67,7 @@ class Form::AdminSettings validates :bootstrap_timeline_accounts, existing_username: { multiple: true } validates :show_domain_blocks, inclusion: { in: %w(disabled users all) } validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) } + validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true } def initialize(_attributes = {}) super diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index 64687b7a6..1dfd21643 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -45,7 +45,6 @@ .fields-group = f.input :require_invite_text, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.require_invite_text.title'), hint: t('admin.settings.registrations.require_invite_text.desc_html'), disabled: !approved_registrations? - .fields-group %hr.spacer/ @@ -100,5 +99,12 @@ = f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 } = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }, label: t('admin.settings.custom_css.title'), hint: t('admin.settings.custom_css.desc_html') + %hr.spacer/ + + .fields-group + = f.input :media_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + = f.input :content_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + = f.input :backups_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/workers/scheduler/backup_cleanup_scheduler.rb b/app/workers/scheduler/backup_cleanup_scheduler.rb deleted file mode 100644 index 85d5312c0..000000000 --- a/app/workers/scheduler/backup_cleanup_scheduler.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::BackupCleanupScheduler - include Sidekiq::Worker - - sidekiq_options retry: 0 - - def perform - old_backups.reorder(nil).find_each(&:destroy!) - end - - private - - def old_backups - Backup.where('created_at < ?', 7.days.ago) - end -end diff --git a/app/workers/scheduler/feed_cleanup_scheduler.rb b/app/workers/scheduler/feed_cleanup_scheduler.rb deleted file mode 100644 index aa0cc8b8d..000000000 --- a/app/workers/scheduler/feed_cleanup_scheduler.rb +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::FeedCleanupScheduler - include Sidekiq::Worker - include Redisable - - sidekiq_options retry: 0 - - def perform - clean_home_feeds! - clean_list_feeds! - end - - private - - def clean_home_feeds! - feed_manager.clean_feeds!(:home, inactive_account_ids) - end - - def clean_list_feeds! - feed_manager.clean_feeds!(:list, inactive_list_ids) - end - - def inactive_account_ids - @inactive_account_ids ||= User.confirmed.inactive.pluck(:account_id) - end - - def inactive_list_ids - List.where(account_id: inactive_account_ids).pluck(:id) - end - - def feed_manager - FeedManager.instance - end -end diff --git a/app/workers/scheduler/media_cleanup_scheduler.rb b/app/workers/scheduler/media_cleanup_scheduler.rb deleted file mode 100644 index 24d30a6be..000000000 --- a/app/workers/scheduler/media_cleanup_scheduler.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::MediaCleanupScheduler - include Sidekiq::Worker - - sidekiq_options retry: 0 - - def perform - unattached_media.find_each(&:destroy) - end - - private - - def unattached_media - MediaAttachment.reorder(nil).unattached.where('created_at < ?', 1.day.ago) - end -end diff --git a/app/workers/scheduler/vacuum_scheduler.rb b/app/workers/scheduler/vacuum_scheduler.rb new file mode 100644 index 000000000..ce88ff204 --- /dev/null +++ b/app/workers/scheduler/vacuum_scheduler.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +class Scheduler::VacuumScheduler + include Sidekiq::Worker + + sidekiq_options retry: 0 + + def perform + vacuum_operations.each do |operation| + operation.perform + rescue => e + Rails.logger.error("Error while running #{operation.class.name}: #{e}") + end + end + + private + + def vacuum_operations + [ + statuses_vacuum, + media_attachments_vacuum, + preview_cards_vacuum, + backups_vacuum, + access_tokens_vacuum, + feeds_vacuum, + ] + end + + def statuses_vacuum + Vacuum::StatusesVacuum.new(content_retention_policy.content_cache_retention_period) + end + + def media_attachments_vacuum + Vacuum::MediaAttachmentsVacuum.new(content_retention_policy.media_cache_retention_period) + end + + def preview_cards_vacuum + Vacuum::PreviewCardsVacuum.new(content_retention_policy.media_cache_retention_period) + end + + def backups_vacuum + Vacuum::BackupsVacuum.new(content_retention_policy.backups_retention_period) + end + + def access_tokens_vacuum + Vacuum::AccessTokensVacuum.new + end + + def feeds_vacuum + Vacuum::FeedsVacuum.new + end + + def content_retention_policy + ContentRetentionPolicy.current + end +end diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index ddc83e896..db5b45e41 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -73,6 +73,10 @@ en: actions: hide: Completely hide the filtered content, behaving as if it did not exist warn: Hide the filtered content behind a warning mentioning the filter's title + form_admin_settings: + backups_retention_period: Keep generated user archives for the specified number of days. + content_cache_retention_period: Posts from other servers will be deleted after the specified number of days when set to a positive value. This may be irreversible. + media_cache_retention_period: Downloaded media files will be deleted after the specified number of days when set to a positive value, and re-downloaded on demand. form_challenge: current_password: You are entering a secure area imports: @@ -207,6 +211,10 @@ en: actions: hide: Hide completely warn: Hide with a warning + form_admin_settings: + backups_retention_period: User archive retention period + content_cache_retention_period: Content cache retention period + media_cache_retention_period: Media cache retention period interactions: must_be_follower: Block notifications from non-followers must_be_following: Block notifications from people you don't follow diff --git a/config/settings.yml b/config/settings.yml index eaa05071e..41742118b 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -70,6 +70,7 @@ defaults: &defaults show_domain_blocks: 'disabled' show_domain_blocks_rationale: 'disabled' require_invite_text: false + backups_retention_period: 7 development: <<: *defaults diff --git a/config/sidekiq.yml b/config/sidekiq.yml index 9ec6eb5ec..e3156aa34 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -25,22 +25,14 @@ every: '5m' class: Scheduler::IndexingScheduler queue: scheduler - media_cleanup_scheduler: + vacuum_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' - class: Scheduler::MediaCleanupScheduler - queue: scheduler - feed_cleanup_scheduler: - cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * *' - class: Scheduler::FeedCleanupScheduler + class: Scheduler::VacuumScheduler queue: scheduler follow_recommendations_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(6..9) %> * * *' class: Scheduler::FollowRecommendationsScheduler queue: scheduler - doorkeeper_cleanup_scheduler: - cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * 0' - class: Scheduler::DoorkeeperCleanupScheduler - queue: scheduler user_cleanup_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *' class: Scheduler::UserCleanupScheduler @@ -49,10 +41,6 @@ cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' class: Scheduler::IpCleanupScheduler queue: scheduler - backup_cleanup_scheduler: - cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' - class: Scheduler::BackupCleanupScheduler - queue: scheduler pghero_scheduler: cron: '0 0 * * *' class: Scheduler::PgheroScheduler diff --git a/spec/fabricators/access_grant_fabricator.rb b/spec/fabricators/access_grant_fabricator.rb new file mode 100644 index 000000000..ae1945f2b --- /dev/null +++ b/spec/fabricators/access_grant_fabricator.rb @@ -0,0 +1,6 @@ +Fabricator :access_grant, from: 'Doorkeeper::AccessGrant' do + application + resource_owner_id { Fabricate(:user).id } + expires_in 3_600 + redirect_uri { Doorkeeper.configuration.native_redirect_uri } +end diff --git a/spec/fabricators/preview_card_fabricator.rb b/spec/fabricators/preview_card_fabricator.rb index f119c117d..99b5edc43 100644 --- a/spec/fabricators/preview_card_fabricator.rb +++ b/spec/fabricators/preview_card_fabricator.rb @@ -3,4 +3,5 @@ Fabricator(:preview_card) do title { Faker::Lorem.sentence } description { Faker::Lorem.paragraph } type 'link' + image { attachment_fixture('attachment.jpg') } end diff --git a/spec/lib/vacuum/access_tokens_vacuum_spec.rb b/spec/lib/vacuum/access_tokens_vacuum_spec.rb new file mode 100644 index 000000000..0244c3449 --- /dev/null +++ b/spec/lib/vacuum/access_tokens_vacuum_spec.rb @@ -0,0 +1,33 @@ +require 'rails_helper' + +RSpec.describe Vacuum::AccessTokensVacuum do + subject { described_class.new } + + describe '#perform' do + let!(:revoked_access_token) { Fabricate(:access_token, revoked_at: 1.minute.ago) } + let!(:active_access_token) { Fabricate(:access_token) } + + let!(:revoked_access_grant) { Fabricate(:access_grant, revoked_at: 1.minute.ago) } + let!(:active_access_grant) { Fabricate(:access_grant) } + + before do + subject.perform + end + + it 'deletes revoked access tokens' do + expect { revoked_access_token.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'deletes revoked access grants' do + expect { revoked_access_grant.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'does not delete active access tokens' do + expect { active_access_token.reload }.to_not raise_error + end + + it 'does not delete active access grants' do + expect { active_access_grant.reload }.to_not raise_error + end + end +end diff --git a/spec/lib/vacuum/backups_vacuum_spec.rb b/spec/lib/vacuum/backups_vacuum_spec.rb new file mode 100644 index 000000000..4e2de083f --- /dev/null +++ b/spec/lib/vacuum/backups_vacuum_spec.rb @@ -0,0 +1,24 @@ +require 'rails_helper' + +RSpec.describe Vacuum::BackupsVacuum do + let(:retention_period) { 7.days } + + subject { described_class.new(retention_period) } + + describe '#perform' do + let!(:expired_backup) { Fabricate(:backup, created_at: (retention_period + 1.day).ago) } + let!(:current_backup) { Fabricate(:backup) } + + before do + subject.perform + end + + it 'deletes backups past the retention period' do + expect { expired_backup.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'does not delete backups within the retention period' do + expect { current_backup.reload }.to_not raise_error + end + end +end diff --git a/spec/lib/vacuum/feeds_vacuum_spec.rb b/spec/lib/vacuum/feeds_vacuum_spec.rb new file mode 100644 index 000000000..0aec26740 --- /dev/null +++ b/spec/lib/vacuum/feeds_vacuum_spec.rb @@ -0,0 +1,30 @@ +require 'rails_helper' + +RSpec.describe Vacuum::FeedsVacuum do + subject { described_class.new } + + describe '#perform' do + let!(:active_user) { Fabricate(:user, current_sign_in_at: 2.days.ago) } + let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) } + + before do + redis.zadd(feed_key_for(inactive_user), 1, 1) + redis.zadd(feed_key_for(active_user), 1, 1) + redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) + redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) + + subject.perform + end + + it 'clears feeds of inactive users and lists' do + expect(redis.zcard(feed_key_for(inactive_user))).to eq 0 + expect(redis.zcard(feed_key_for(active_user))).to eq 1 + expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false + expect(redis.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false + end + end + + def feed_key_for(user, subtype = nil) + FeedManager.instance.key(:home, user.account_id, subtype) + end +end diff --git a/spec/lib/vacuum/media_attachments_vacuum_spec.rb b/spec/lib/vacuum/media_attachments_vacuum_spec.rb new file mode 100644 index 000000000..be8458d9b --- /dev/null +++ b/spec/lib/vacuum/media_attachments_vacuum_spec.rb @@ -0,0 +1,47 @@ +require 'rails_helper' + +RSpec.describe Vacuum::MediaAttachmentsVacuum do + let(:retention_period) { 7.days } + + subject { described_class.new(retention_period) } + + let(:remote_status) { Fabricate(:status, account: Fabricate(:account, domain: 'example.com')) } + let(:local_status) { Fabricate(:status) } + + describe '#perform' do + let!(:old_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) } + let!(:old_local_media) { Fabricate(:media_attachment, status: local_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) } + let!(:new_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status) } + let!(:new_local_media) { Fabricate(:media_attachment, status: local_status) } + let!(:old_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) } + let!(:new_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) } + + before do + subject.perform + end + + it 'deletes cache of remote media attachments past the retention period' do + expect(old_remote_media.reload.file).to be_blank + end + + it 'does not touch local media attachments past the retention period' do + expect(old_local_media.reload.file).to_not be_blank + end + + it 'does not delete cache of remote media attachments within the retention period' do + expect(new_remote_media.reload.file).to_not be_blank + end + + it 'does not touch local media attachments within the retention period' do + expect(new_local_media.reload.file).to_not be_blank + end + + it 'deletes unattached media attachments past TTL' do + expect { old_unattached_media.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + + it 'does not delete unattached media attachments within TTL' do + expect(new_unattached_media.reload).to be_persisted + end + end +end diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb new file mode 100644 index 000000000..4a4a599fa --- /dev/null +++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb @@ -0,0 +1,36 @@ +require 'rails_helper' + +RSpec.describe Vacuum::PreviewCardsVacuum do + let(:retention_period) { 7.days } + + subject { described_class.new(retention_period) } + + describe '#perform' do + let!(:orphaned_preview_card) { Fabricate(:preview_card, created_at: 2.days.ago) } + let!(:old_preview_card) { Fabricate(:preview_card, updated_at: (retention_period + 1.day).ago) } + let!(:new_preview_card) { Fabricate(:preview_card) } + + before do + old_preview_card.statuses << Fabricate(:status) + new_preview_card.statuses << Fabricate(:status) + + subject.perform + end + + it 'deletes cache of preview cards last updated before the retention period' do + expect(old_preview_card.reload.image).to be_blank + end + + it 'does not delete cache of preview cards last updated within the retention period' do + expect(new_preview_card.reload.image).to_not be_blank + end + + it 'does not delete attached preview cards' do + expect(new_preview_card.reload).to be_persisted + end + + it 'deletes preview cards not attached to any status' do + expect { orphaned_preview_card.reload }.to raise_error ActiveRecord::RecordNotFound + end + end +end diff --git a/spec/lib/vacuum/statuses_vacuum_spec.rb b/spec/lib/vacuum/statuses_vacuum_spec.rb new file mode 100644 index 000000000..83f3c5c9f --- /dev/null +++ b/spec/lib/vacuum/statuses_vacuum_spec.rb @@ -0,0 +1,36 @@ +require 'rails_helper' + +RSpec.describe Vacuum::StatusesVacuum do + let(:retention_period) { 7.days } + + let(:remote_account) { Fabricate(:account, domain: 'example.com') } + + subject { described_class.new(retention_period) } + + describe '#perform' do + let!(:remote_status_old) { Fabricate(:status, account: remote_account, created_at: (retention_period + 2.days).ago) } + let!(:remote_status_recent) { Fabricate(:status, account: remote_account, created_at: (retention_period - 2.days).ago) } + let!(:local_status_old) { Fabricate(:status, created_at: (retention_period + 2.days).ago) } + let!(:local_status_recent) { Fabricate(:status, created_at: (retention_period - 2.days).ago) } + + before do + subject.perform + end + + it 'deletes remote statuses past the retention period' do + expect { remote_status_old.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'does not delete local statuses past the retention period' do + expect { local_status_old.reload }.to_not raise_error + end + + it 'does not delete remote statuses within the retention period' do + expect { remote_status_recent.reload }.to_not raise_error + end + + it 'does not delete local statuses within the retention period' do + expect { local_status_recent.reload }.to_not raise_error + end + end +end diff --git a/spec/lib/vacuum/system_keys_vacuum_spec.rb b/spec/lib/vacuum/system_keys_vacuum_spec.rb new file mode 100644 index 000000000..565892f02 --- /dev/null +++ b/spec/lib/vacuum/system_keys_vacuum_spec.rb @@ -0,0 +1,22 @@ +require 'rails_helper' + +RSpec.describe Vacuum::SystemKeysVacuum do + subject { described_class.new } + + describe '#perform' do + let!(:expired_system_key) { Fabricate(:system_key, created_at: (SystemKey::ROTATION_PERIOD * 4).ago) } + let!(:current_system_key) { Fabricate(:system_key) } + + before do + subject.perform + end + + it 'deletes the expired key' do + expect { expired_system_key.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'does not delete the current key' do + expect { current_system_key.reload }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb b/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb deleted file mode 100644 index 82d794594..000000000 --- a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb +++ /dev/null @@ -1,26 +0,0 @@ -require 'rails_helper' - -describe Scheduler::FeedCleanupScheduler do - subject { described_class.new } - - let!(:active_user) { Fabricate(:user, current_sign_in_at: 2.days.ago) } - let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) } - - it 'clears feeds of inactives' do - redis.zadd(feed_key_for(inactive_user), 1, 1) - redis.zadd(feed_key_for(active_user), 1, 1) - redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) - redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) - - subject.perform - - expect(redis.zcard(feed_key_for(inactive_user))).to eq 0 - expect(redis.zcard(feed_key_for(active_user))).to eq 1 - expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false - expect(redis.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false - end - - def feed_key_for(user, subtype = nil) - FeedManager.instance.key(:home, user.account_id, subtype) - end -end diff --git a/spec/workers/scheduler/media_cleanup_scheduler_spec.rb b/spec/workers/scheduler/media_cleanup_scheduler_spec.rb deleted file mode 100644 index 8a0da67e1..000000000 --- a/spec/workers/scheduler/media_cleanup_scheduler_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'rails_helper' - -describe Scheduler::MediaCleanupScheduler do - subject { described_class.new } - - let!(:old_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) } - let!(:new_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) } - - it 'removes old media records' do - subject.perform - - expect { old_media.reload }.to raise_error(ActiveRecord::RecordNotFound) - expect(new_media.reload).to be_persisted - end -end From 1d5196918ae8803cfb07903aff8cd5cfa0b979be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:31:33 +0900 Subject: [PATCH 190/280] Bump tzinfo-data from 1.2022.3 to 1.2022.4 (#19238) Bumps [tzinfo-data](https://github.com/tzinfo/tzinfo-data) from 1.2022.3 to 1.2022.4. - [Release notes](https://github.com/tzinfo/tzinfo-data/releases) - [Commits](https://github.com/tzinfo/tzinfo-data/compare/v1.2022.3...v1.2022.4) --- updated-dependencies: - dependency-name: tzinfo-data dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 425970a52..21579f1f1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -681,7 +681,7 @@ GEM unf (~> 0.1.0) tzinfo (2.0.5) concurrent-ruby (~> 1.0) - tzinfo-data (1.2022.3) + tzinfo-data (1.2022.4) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext From 97d34c51177c0c8a1b6bdb804cb371a79d45d6c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:31:46 +0900 Subject: [PATCH 191/280] Bump sass from 1.54.9 to 1.55.0 (#19239) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.9 to 1.55.0. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.9...1.55.0) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5472a41d8..224fbd409 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.9", + "sass": "^1.55.0", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index a6a897626..e351f6b7e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9890,10 +9890,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.9: - version "1.54.9" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.9.tgz#b05f14ed572869218d1a76961de60cd647221762" - integrity sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q== +sass@^1.55.0: + version "1.55.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.55.0.tgz#0c4d3c293cfe8f8a2e8d3b666e1cf1bff8065d1c" + integrity sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 950900b9689437a5eeb6b92f32c538a68b8dbdc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:32:25 +0900 Subject: [PATCH 192/280] Bump ws from 8.8.1 to 8.9.0 (#19240) Bumps [ws](https://github.com/websockets/ws) from 8.8.1 to 8.9.0. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.8.1...8.9.0) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 224fbd409..967833a95 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.4", - "ws": "^8.8.1" + "ws": "^8.9.0" }, "devDependencies": { "@babel/eslint-parser": "^7.19.1", diff --git a/yarn.lock b/yarn.lock index e351f6b7e..90f0e233b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12019,10 +12019,10 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.8.0, ws@^8.8.1: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" - integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== +ws@^8.8.0, ws@^8.9.0: + version "8.9.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.9.0.tgz#2a994bb67144be1b53fe2d23c53c028adeb7f45e" + integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg== xml-name-validator@^4.0.0: version "4.0.0" From 88b3a0681c059d98e89c8bf8e1dcb47039d0742c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:33:59 +0900 Subject: [PATCH 193/280] Bump stylelint from 14.12.0 to 14.12.1 (#19241) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.12.0 to 14.12.1. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.12.0...14.12.1) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 967833a95..30eaf9430 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.12.0", + "stylelint": "^14.12.1", "stylelint-config-standard-scss": "^5.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index 90f0e233b..ebd66fca0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10670,10 +10670,10 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.12.0: - version "14.12.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.12.0.tgz#86d5b60d0f30a6bd0b59e1d4c85a267f0caef97e" - integrity sha512-9Sa+IsT31PN9zf9q5ZVZNvhT6jMVu6YhpI38g3Akn7vONipGL0GNd9QCblwtJ3ysaoM80P/+9mOcFB1xnytiQQ== +stylelint@^14.12.1: + version "14.12.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.12.1.tgz#7fac1578662ca12330c32a61c8583be7fad4a530" + integrity sha512-ZEM4TuksChMBfuPadQsHUkbOoRySAT9QMfDvvYxdAchOJl0p+csTMBXOu6ORAAxKhwBmxqJiep8V88bXfNs3EQ== dependencies: "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" From 2635c8dc5c19ea976b9fc787169244d7e8cec90a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:34:29 +0900 Subject: [PATCH 194/280] Bump react-redux from 7.2.8 to 7.2.9 (#19242) Bumps [react-redux](https://github.com/reduxjs/react-redux) from 7.2.8 to 7.2.9. - [Release notes](https://github.com/reduxjs/react-redux/releases) - [Changelog](https://github.com/reduxjs/react-redux/blob/master/CHANGELOG.md) - [Commits](https://github.com/reduxjs/react-redux/compare/v7.2.8...v7.2.9) --- updated-dependencies: - dependency-name: react-redux dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 30eaf9430..ca1786038 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "react-motion": "^0.5.2", "react-notification": "^6.8.5", "react-overlays": "^0.9.3", - "react-redux": "^7.2.8", + "react-redux": "^7.2.9", "react-redux-loading-bar": "^5.0.4", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", diff --git a/yarn.lock b/yarn.lock index ebd66fca0..90302b284 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9310,10 +9310,10 @@ react-redux-loading-bar@^5.0.4: prop-types "^15.7.2" react-lifecycles-compat "^3.0.4" -react-redux@^7.2.8: - version "7.2.8" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de" - integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw== +react-redux@^7.2.9: + version "7.2.9" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" + integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== dependencies: "@babel/runtime" "^7.15.4" "@types/react-redux" "^7.1.20" From d86dd067ceb1dc05e67417fa1d7f1e84519b2fca Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Wed, 28 Sep 2022 06:33:56 +0900 Subject: [PATCH 195/280] Fix auto detect language for translate service (#19244) --- .devcontainer/devcontainer.json | 2 +- .devcontainer/docker-compose.yml | 7 +++++++ app/lib/translation_service/deepl.rb | 2 +- app/lib/translation_service/libre_translate.rb | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9d9e54d4f..47497794f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -20,7 +20,7 @@ "forwardPorts": [3000, 4000], // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "bundle install --path vendor/bundle && yarn install && ./bin/rails db:setup", + "postCreateCommand": "bundle install --path vendor/bundle && yarn install && git checkout -- Gemfile.lock && ./bin/rails db:setup", // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode" diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 538f6cccd..46f42c454 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -27,6 +27,7 @@ services: ES_ENABLED: 'true' ES_HOST: es ES_PORT: '9200' + LIBRE_TRANSLATE_ENDPOINT: http://libretranslate:5000 # Overrides default command so things don't shut down after the process ends. command: sleep infinity networks: @@ -72,6 +73,12 @@ services: soft: -1 hard: -1 + libretranslate: + image: libretranslate/libretranslate:v1.2.9 + restart: unless-stopped + networks: + - internal_network + volumes: postgres-data: redis-data: diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb index 89ccf01e5..b75b604a8 100644 --- a/app/lib/translation_service/deepl.rb +++ b/app/lib/translation_service/deepl.rb @@ -28,7 +28,7 @@ class TranslationService::DeepL < TranslationService private def request(text, source_language, target_language) - req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language.upcase, target_lang: target_language, tag_handling: 'html' }) + req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language&.upcase, target_lang: target_language, tag_handling: 'html' }) req.add_headers('Authorization': "DeepL-Auth-Key #{@api_key}") req end diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb index 66acdeed7..8cf26f868 100644 --- a/app/lib/translation_service/libre_translate.rb +++ b/app/lib/translation_service/libre_translate.rb @@ -26,7 +26,8 @@ class TranslationService::LibreTranslate < TranslationService private def request(text, source_language, target_language) - req = Request.new(:post, "#{@base_url}/translate", body: Oj.dump(q: text, source: source_language, target: target_language, format: 'html', api_key: @api_key)) + body = Oj.dump(q: text, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key) + req = Request.new(:post, "#{@base_url}/translate", body: body) req.add_headers('Content-Type': 'application/json') req end From 55a2e9b5beb1fc923c42257edee3df738e208b38 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 28 Sep 2022 01:02:01 +0200 Subject: [PATCH 196/280] Fix translations not being formatted, other issues in web UI (#19245) Fix #19237 --- app/javascript/mastodon/components/status_content.js | 9 +++++---- app/services/translate_status_service.rb | 7 +++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index c8f7bc095..43e938d4e 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -6,7 +6,7 @@ import Permalink from './permalink'; import classnames from 'classnames'; import PollContainer from 'mastodon/containers/poll_container'; import Icon from 'mastodon/components/icon'; -import { autoPlayGif } from 'mastodon/initial_state'; +import { autoPlayGif, languages as preloadedLanguages } from 'mastodon/initial_state'; const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) @@ -180,8 +180,9 @@ class StatusContent extends React.PureComponent { const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); - const renderTranslate = this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && intl.locale !== status.get('language'); - const languageNames = new Intl.DisplayNames([intl.locale], { type: 'language' }); + const renderTranslate = this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && intl.locale !== status.get('language'); + const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); + const languageName = language ? language[2] : status.get('language'); const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') }; @@ -206,7 +207,7 @@ class StatusContent extends React.PureComponent { const translateButton = ( ); diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb index b375226be..539a0d9db 100644 --- a/app/services/translate_status_service.rb +++ b/app/services/translate_status_service.rb @@ -3,13 +3,16 @@ class TranslateStatusService < BaseService CACHE_TTL = 1.day.freeze + include FormattingHelper + def call(status, target_language) raise Mastodon::NotPermittedError unless status.public_visibility? || status.unlisted_visibility? @status = status + @content = status_content_format(@status) @target_language = target_language - Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@status.text, @status.language, @target_language) } + Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@content, @status.language, @target_language) } end private @@ -19,6 +22,6 @@ class TranslateStatusService < BaseService end def content_hash - Digest::SHA256.base64digest(@status.text) + Digest::SHA256.base64digest(@content) end end From 0d0f3c15d3b510b7e6bd975f3725aaf63b52d971 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 28 Sep 2022 01:02:15 +0200 Subject: [PATCH 197/280] Fix language dropdown sometimes not appearing in web UI (#19246) When user has no locale preference saved (such as never changing it from the default), the preferred posting language is nil, and the dropdown is not visible --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 342f5e6cc..4767189a0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -282,7 +282,7 @@ class User < ApplicationRecord end def preferred_posting_language - valid_locale_cascade(settings.default_language, locale) + valid_locale_cascade(settings.default_language, locale, I18n.locale) end def setting_default_privacy From ce5d092a86997194db3eaeecc12aa4aba185b231 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 28 Sep 2022 17:22:49 +0200 Subject: [PATCH 198/280] New Crowdin updates (#19229) * New translations en.json (Romanian) * New translations en.json (French) * New translations en.json (Afrikaans) * New translations en.json (Spanish) * New translations en.json (Korean) * New translations en.json (Lithuanian) * New translations en.json (Macedonian) * New translations en.json (Norwegian) * New translations en.json (Punjabi) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Hebrew) * New translations en.json (Italian) * New translations en.json (Slovak) * New translations en.json (Slovenian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Vietnamese) * New translations en.json (Galician) * New translations en.json (Georgian) * New translations en.json (Irish) * New translations en.json (Armenian) * New translations en.json (Indonesian) * New translations en.json (Bulgarian) * New translations en.json (Ido) * New translations en.json (German) * New translations en.json (Tamil) * New translations en.json (Esperanto) * New translations en.json (Czech) * New translations en.json (Dutch) * New translations en.json (Albanian) * New translations en.json (Japanese) * New translations en.json (Sinhala) * New translations en.json (Hungarian) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.yml (Catalan) * New translations en.json (Danish) * New translations en.json (Greek) * New translations en.json (Frisian) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Thai) * New translations en.json (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Cornish) * New translations en.json (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Malayalam) * New translations en.json (Corsican) * New translations en.json (Sardinian) * New translations en.json (Sanskrit) * New translations en.json (Kabyle) * New translations en.json (Taigi) * New translations en.json (Silesian) * New translations en.json (Breton) * New translations en.json (Tatar) * New translations en.json (Persian) * New translations en.json (Kazakh) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Estonian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Welsh) * New translations en.json (Uyghur) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (Greek) * New translations en.json (Portuguese) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Chinese Simplified) * New translations en.yml (Ukrainian) * New translations en.json (Spanish) * New translations en.json (Korean) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.json (Danish) * New translations en.json (Italian) * New translations en.json (Russian) * New translations en.json (Chinese Traditional) * New translations en.json (Czech) * New translations en.json (Hungarian) * New translations en.json (Latvian) * New translations en.json (Turkish) * New translations en.json (Albanian) * New translations en.json (German) * New translations en.json (Polish) * New translations en.json (Slovenian) * New translations en.json (Vietnamese) * New translations en.json (Ido) * New translations en.json (French) * New translations en.json (Icelandic) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/ca.json | 6 +++--- app/javascript/mastodon/locales/cs.json | 6 +++--- app/javascript/mastodon/locales/da.json | 6 +++--- app/javascript/mastodon/locales/de.json | 6 +++--- app/javascript/mastodon/locales/el.json | 6 +++--- app/javascript/mastodon/locales/es-AR.json | 6 +++--- app/javascript/mastodon/locales/es-MX.json | 14 +++++++------- app/javascript/mastodon/locales/es.json | 6 +++--- app/javascript/mastodon/locales/fr.json | 12 ++++++------ app/javascript/mastodon/locales/hu.json | 6 +++--- app/javascript/mastodon/locales/io.json | 6 +++--- app/javascript/mastodon/locales/is.json | 6 +++--- app/javascript/mastodon/locales/it.json | 6 +++--- app/javascript/mastodon/locales/ja.json | 8 ++++---- app/javascript/mastodon/locales/ko.json | 6 +++--- app/javascript/mastodon/locales/ku.json | 6 +++--- app/javascript/mastodon/locales/lv.json | 6 +++--- app/javascript/mastodon/locales/pl.json | 6 +++--- app/javascript/mastodon/locales/pt-PT.json | 6 +++--- app/javascript/mastodon/locales/ru.json | 6 +++--- app/javascript/mastodon/locales/sl.json | 6 +++--- app/javascript/mastodon/locales/sq.json | 6 +++--- app/javascript/mastodon/locales/tr.json | 6 +++--- app/javascript/mastodon/locales/uk.json | 6 +++--- app/javascript/mastodon/locales/vi.json | 6 +++--- app/javascript/mastodon/locales/zh-CN.json | 14 +++++++------- app/javascript/mastodon/locales/zh-TW.json | 6 +++--- config/locales/ca.yml | 2 +- config/locales/simple_form.zh-CN.yml | 1 + config/locales/uk.yml | 4 ++++ config/locales/zh-CN.yml | 7 +++++++ 31 files changed, 106 insertions(+), 94 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 81a69c4b0..5dbad8d94 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostrar-ne menys per a tot", "status.show_more": "Mostrar-ne més", "status.show_more_all": "Mostrar-ne més per a tot", - "status.show_original": "Show original", + "status.show_original": "Mostra l'original", "status.show_thread": "Mostra el fil", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Tradueix", + "status.translated_from": "Traduït del: {lang}", "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index e3d2f30e8..ccadcec26 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -519,10 +519,10 @@ "status.show_less_all": "Zobrazit méně pro všechny", "status.show_more": "Zobrazit více", "status.show_more_all": "Zobrazit více pro všechny", - "status.show_original": "Show original", + "status.show_original": "Zobrazit původní", "status.show_thread": "Zobrazit vlákno", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Přeložit", + "status.translated_from": "Přeloženo z {lang}", "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 92dddbfe2..e57b301dc 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -519,10 +519,10 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mere", "status.show_more_all": "Vis mere for alle", - "status.show_original": "Show original", + "status.show_original": "Vis original", "status.show_thread": "Vis tråd", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Oversæt", + "status.translated_from": "Oversat fra {lang}", "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index b0a4ca5fa..a2f8f087d 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -519,10 +519,10 @@ "status.show_less_all": "Alle Inhaltswarnungen zuklappen", "status.show_more": "Mehr anzeigen", "status.show_more_all": "Alle Inhaltswarnungen aufklappen", - "status.show_original": "Show original", + "status.show_original": "Original anzeigen", "status.show_thread": "Zeige Konversation", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Übersetzen", + "status.translated_from": "Aus {lang} übersetzt", "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung von Konversation aufheben", "status.unpin": "Vom Profil lösen", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 2a32dbcc6..02f071ede 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -519,10 +519,10 @@ "status.show_less_all": "Δείξε λιγότερα για όλα", "status.show_more": "Δείξε περισσότερα", "status.show_more_all": "Δείξε περισσότερα για όλα", - "status.show_original": "Show original", + "status.show_original": "Εμφάνιση αρχικού", "status.show_thread": "Εμφάνιση νήματος", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Μετάφραση", + "status.translated_from": "Μεταφράστηκε από {lang}", "status.uncached_media_warning": "Μη διαθέσιμα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 6246462bb..bbaa3591e 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", - "status.show_original": "Show original", + "status.show_original": "Mostrar original", "status.show_thread": "Mostrar hilo", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traducir", + "status.translated_from": "Traducido desde el {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index f9823a8a4..36ac226b5 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -24,7 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -519,16 +519,16 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", - "status.show_original": "Show original", + "status.show_original": "Mostrar original", "status.show_thread": "Mostrar hilo", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traducir", + "status.translated_from": "Traducido de {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Sólo los mensajes en los idiomas seleccionados aparecerán en su inicio y otras líneas de tiempo después del cambio. Seleccione ninguno para recibir mensajes en todos los idiomas.", + "subscribed_languages.save": "Guardar cambios", + "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federado", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 68cd972ab..af6a2ba97 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", - "status.show_original": "Show original", + "status.show_original": "Mostrar original", "status.show_thread": "Mostrar hilo", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traducir", + "status.translated_from": "Traducido del {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 3172f6c72..5c615041f 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -24,7 +24,7 @@ "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", "account.joined": "Ici depuis {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Changer les langues abonnées", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", "account.media": "Médias", @@ -60,7 +60,7 @@ "alert.unexpected.title": "Oups !", "announcement.announcement": "Annonce", "attachments_list.unprocessed": "(non traité)", - "audio.hide": "Hide audio", + "audio.hide": "Masquer l'audio", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", "bundle_column_error.body": "Une erreur s’est produite lors du chargement de ce composant.", @@ -198,10 +198,10 @@ "explore.trending_links": "Actualité", "explore.trending_statuses": "Messages", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.context_mismatch_explanation": "Cette catégorie de filtre ne s'applique pas au contexte dans lequel vous avez accédé à ce message. Si vous voulez que le message soit filtré dans ce contexte également, vous devrez modifier le filtre.", + "filter_modal.added.context_mismatch_title": "Incompatibilité du contexte !", + "filter_modal.added.expired_explanation": "Cette catégorie de filtre a expiré, vous devrez modifier la date d'expiration pour qu'elle soit appliquée.", + "filter_modal.added.expired_title": "Filtre expiré !", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", "filter_modal.added.settings_link": "settings page", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index c2679b35a..08df3cbc9 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -519,10 +519,10 @@ "status.show_less_all": "Kevesebbet mindenhol", "status.show_more": "Többet", "status.show_more_all": "Többet mindenhol", - "status.show_original": "Show original", + "status.show_original": "Eredeti mutatása", "status.show_thread": "Szál mutatása", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Fordítás", + "status.translated_from": "{lang} nyelvből fordítva", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 8fe2f7c8c..485b35f1b 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -519,10 +519,10 @@ "status.show_less_all": "Montrez min por omno", "status.show_more": "Montrar plue", "status.show_more_all": "Montrez pluse por omno", - "status.show_original": "Show original", + "status.show_original": "Montrez originalo", "status.show_thread": "Montrez postaro", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Tradukez", + "status.translated_from": "Tradukesis de {lang}", "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", "status.unpin": "Depinglagez de profilo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 73eafad06..c58085f1e 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -519,10 +519,10 @@ "status.show_less_all": "Sýna minna fyrir allt", "status.show_more": "Sýna meira", "status.show_more_all": "Sýna meira fyrir allt", - "status.show_original": "Show original", + "status.show_original": "Sýna upprunalega", "status.show_thread": "Birta þráð", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Þýða", + "status.translated_from": "Þýtt úr {lang}", "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 92fe389e4..4376c0cff 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostra meno per tutti", "status.show_more": "Mostra di più", "status.show_more_all": "Mostra di più per tutti", - "status.show_original": "Show original", + "status.show_original": "Mostra originale", "status.show_thread": "Mostra conversazione", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traduci", + "status.translated_from": "Tradotto da {lang}", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 1e49517f9..9fcd80947 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -519,15 +519,15 @@ "status.show_less_all": "全て隠す", "status.show_more": "もっと見る", "status.show_more_all": "全て見る", - "status.show_original": "Show original", + "status.show_original": "原文を表示", "status.show_thread": "スレッドを表示", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "翻訳", + "status.translated_from": "{lang}からの翻訳", "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "変更を保存", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "隠す", "suggestions.header": "興味あるかもしれません…", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 8dc82a3a8..4d2d5e449 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -519,10 +519,10 @@ "status.show_less_all": "모두 접기", "status.show_more": "더 보기", "status.show_more_all": "모두 펼치기", - "status.show_original": "Show original", + "status.show_original": "원본 보기", "status.show_thread": "글타래 보기", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "번역", + "status.translated_from": "{lang}에서 번역됨", "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 6b5128f4d..41e512432 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -519,10 +519,10 @@ "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", "status.show_more": "Bêtir nîşan bide", "status.show_more_all": "Bêtir nîşan bide bo hemûyan", - "status.show_original": "Show original", + "status.show_original": "A resen nîşan bide", "status.show_thread": "Mijarê nîşan bide", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Wergerîne", + "status.translated_from": "Ji {lang} hate wergerandin", "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index b018c8d49..83d30aa0f 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -519,10 +519,10 @@ "status.show_less_all": "Rādīt mazāk visiem", "status.show_more": "Rādīt vairāk", "status.show_more_all": "Rādīt vairāk visiem", - "status.show_original": "Show original", + "status.show_original": "Rādīt oriģinālu", "status.show_thread": "Rādīt tematu", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Tulkot", + "status.translated_from": "Tulkot no {lang}", "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 617c81a68..71ae209f3 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -519,10 +519,10 @@ "status.show_less_all": "Zwiń wszystkie", "status.show_more": "Rozwiń", "status.show_more_all": "Rozwiń wszystkie", - "status.show_original": "Show original", + "status.show_original": "Pokaż oryginał", "status.show_thread": "Pokaż wątek", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Przetłumacz", + "status.translated_from": "Przetłumaczone z {lang}", "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 7f3058165..7c9936c6d 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostrar menos para todas", "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais para todas", - "status.show_original": "Show original", + "status.show_original": "Mostrar original", "status.show_thread": "Mostrar conversa", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traduzir", + "status.translated_from": "Traduzido de {lang}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 957f64b85..47a0a7953 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -519,10 +519,10 @@ "status.show_less_all": "Свернуть все спойлеры в ветке", "status.show_more": "Развернуть", "status.show_more_all": "Развернуть все спойлеры в ветке", - "status.show_original": "Show original", + "status.show_original": "Показать оригинал", "status.show_thread": "Показать обсуждение", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Перевод", + "status.translated_from": "Переведено с {lang}", "status.uncached_media_warning": "Невозможно отобразить файл", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index c4ce59e45..d2e2fdbab 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -519,10 +519,10 @@ "status.show_less_all": "Prikaži manj za vse", "status.show_more": "Prikaži več", "status.show_more_all": "Prikaži več za vse", - "status.show_original": "Show original", + "status.show_original": "Pokaži izvirnik", "status.show_thread": "Prikaži objavo", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Prevedi", + "status.translated_from": "Prevedeno iz jezika: {lang}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 4be47edc6..5e971ce6e 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -519,10 +519,10 @@ "status.show_less_all": "Shfaq më pak për të tërë", "status.show_more": "Shfaq më tepër", "status.show_more_all": "Shfaq më tepër për të tërë", - "status.show_original": "Show original", + "status.show_original": "Shfaq origjinalin", "status.show_thread": "Shfaq rrjedhën", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Përktheje", + "status.translated_from": "Përkthyer nga {lang}", "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 9f581a9f1..4ddcef55a 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -519,10 +519,10 @@ "status.show_less_all": "Hepsi için daha az göster", "status.show_more": "Daha fazlasını göster", "status.show_more_all": "Hepsi için daha fazla göster", - "status.show_original": "Show original", + "status.show_original": "Orijinali göster", "status.show_thread": "Konuyu göster", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Çevir", + "status.translated_from": "{lang} dilinden çevrildi", "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 5fb6030d5..a81cefe32 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -519,10 +519,10 @@ "status.show_less_all": "Показувати менше для всіх", "status.show_more": "Розгорнути", "status.show_more_all": "Показувати більше для всіх", - "status.show_original": "Show original", + "status.show_original": "Показати оригінал", "status.show_thread": "Показати ланцюжок", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Перекласти", + "status.translated_from": "Перекладено з {lang}", "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 707a4a285..a69a1830f 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -519,10 +519,10 @@ "status.show_less_all": "Thu gọn toàn bộ", "status.show_more": "Xem thêm", "status.show_more_all": "Hiển thị tất cả", - "status.show_original": "Show original", + "status.show_original": "Bản gốc", "status.show_thread": "Xem chuỗi tút này", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Dịch", + "status.translated_from": "Dịch từ {lang}", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 9be030663..40d9168a9 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -24,7 +24,7 @@ "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined": "加入于 {date}", - "account.languages": "Change subscribed languages", + "account.languages": "更改订阅语言", "account.link_verified_on": "此链接的所有权已在 {date} 检查", "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", "account.media": "媒体", @@ -519,16 +519,16 @@ "status.show_less_all": "隐藏全部内容", "status.show_more": "显示更多", "status.show_more_all": "显示全部内容", - "status.show_original": "Show original", + "status.show_original": "显示原文", "status.show_thread": "显示全部对话", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "翻译", + "status.translated_from": "翻译自 {lang}", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "更改此选择后,仅选定语言的嘟文会出现在您的主页和列表时间轴上。选择「无」将接收所有语言的嘟文。", + "subscribed_languages.save": "保存更改", + "subscribed_languages.target": "为 {target} 更改订阅语言", "suggestions.dismiss": "关闭建议", "suggestions.header": "你可能会感兴趣…", "tabs_bar.federated_timeline": "跨站", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 200f31f66..8189e896c 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -519,10 +519,10 @@ "status.show_less_all": "減少顯示這類嘟文", "status.show_more": "顯示更多", "status.show_more_all": "顯示更多這類嘟文", - "status.show_original": "Show original", + "status.show_original": "顯示原文", "status.show_thread": "顯示討論串", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "翻譯", + "status.translated_from": "翻譯自 {lang}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "從個人檔案頁面解除釘選", diff --git a/config/locales/ca.yml b/config/locales/ca.yml index a03e37cc6..43d77f636 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1754,7 +1754,7 @@ ca: details: 'Aquí estan els detalls del inici de sessió:' explanation: Hem detectat un inici de sessió del teu compte des d'una nova adreça IP. further_actions_html: Si no has estat tu, recomanem que tu %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur. - subject: El teu compte ha estat accedit des d'una nova adreça IP + subject: S'ha accedit al teu compte des d'una adreça IP nova title: Un nou inici de sessió warning: appeal: Envia una apel·lació diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 0239304b1..e8bddf332 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -253,6 +253,7 @@ zh-CN: events: 已启用事件 url: 端点网址 'no': 否 + not_recommended: 不推荐 recommended: 推荐 required: mark: "*" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index d423850c3..58abba1bd 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -498,6 +498,7 @@ uk: resolve: Розв'язати домен title: Нове блокування поштового домену no_email_domain_block_selected: Жодні налаштування блокування доменів електронної пошти не було змінено, оскільки жоден з них не було обрано + resolved_dns_records_hint_html: Ім'я домену резолвиться в наступні домени MX, які в кінцевому рахунку відповідають за прийняття електронної пошти. Блокування домену MX заблокує реєстрацію з будь-якої e-mail адреси, яка використовує однаковий домен MX, навіть якщо доменне ім'я буде інакше. Будьте обережні, щоб не блокувати великих поштових провайдерів. resolved_through_html: Розв'язано через %{domain} title: Чорний список поштових доменів follow_recommendations: @@ -889,6 +890,7 @@ uk: links: allow: Дозволити посилання allow_provider: Дозволити публікатора + description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких Ваш сервер бачить пости. Це може допомогти вашим користувачам дізнатися, що відбувається в світі. Посилання не відображається публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання. disallow: Заборонити посилання disallow_provider: Заборонити публікатора shared_by_over_week: @@ -902,12 +904,14 @@ uk: pending_review: Очікує перевірки preview_card_providers: allowed: Посилання цього публікатора можуть бути популярними + description_html: Це домени, з яких часто передаються посилання на вашому сервері. Посилання не будуть публічно приходити, якщо домен посилання не буде затверджено. Ваше затвердження (або відхилення) поширюється на піддомени. rejected: Посилання цього публікатора можуть не будуть популярними title: Публікатори rejected: Відхилено statuses: allow: Дозволити оприлюднення allow_account: Дозволити автора + description_html: Це дописи, про які ваш сервер знає як такі, що в даний час є спільні і навіть ті, які зараз є дуже популярними. Це може допомогти вашим новим та старим користувачам, щоб знайти більше людей для слідування. Жоден запис не відображається публічно, поки ви не затверджуєте автора, і автор дозволяє іншим користувачам підписатися на це. Ви також можете дозволити або відхилити окремі повідомлення. disallow: Заборонити допис disallow_account: Заборонити автора not_discoverable: Автор не вирішив бути видимим diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index e3eacca16..ceffecd27 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -234,6 +234,7 @@ zh-CN: confirm_user: 确认用户 create_account_warning: 创建警告 create_announcement: 创建公告 + create_canonical_email_block: 新增 E-mail 屏蔽 create_custom_emoji: 创建自定义表情符号 create_domain_allow: 允许新域名 create_domain_block: 封禁新域名 @@ -243,6 +244,7 @@ zh-CN: create_user_role: 创建角色 demote_user: 给用户降职 destroy_announcement: 删除公告 + destroy_canonical_email_block: 删除 E-mail 封禁 destroy_custom_emoji: 删除自定义表情符号 destroy_domain_allow: 解除域名允许 destroy_domain_block: 解除域名封禁 @@ -278,6 +280,7 @@ zh-CN: update_announcement: 更新公告 update_custom_emoji: 更新自定义表情符号 update_domain_block: 更新域名屏蔽 + update_ip_block: 编辑 IP 封禁规则 update_status: 更新嘟文 update_user_role: 更新角色 actions: @@ -289,6 +292,7 @@ zh-CN: confirm_user_html: "%{name} 确认了用户 %{target} 的电子邮件地址" create_account_warning_html: "%{name} 向 %{target} 发送了警告" create_announcement_html: "%{name} 创建了新公告 %{target}" + create_canonical_email_block_html: "%{name} 屏蔽了 hash 为 %{target} 的电子邮箱" create_custom_emoji_html: "%{name} 添加了新的自定义表情 %{target}" create_domain_allow_html: "%{name} 允许了和域名 %{target} 的跨站交互" create_domain_block_html: "%{name} 屏蔽了域名 %{target}" @@ -298,6 +302,7 @@ zh-CN: create_user_role_html: "%{name} 创建了 %{target} 角色" demote_user_html: "%{name} 对用户 %{target} 进行了降任操作" destroy_announcement_html: "%{name} 删除了公告 %{target}" + destroy_canonical_email_block_html: "%{name} 解除屏蔽了 hash 为 %{target} 的电子邮箱" destroy_custom_emoji_html: "%{name} 删除了自定义表情 %{target}" destroy_domain_allow_html: "%{name} 拒绝了和 %{target} 跨站交互" destroy_domain_block_html: "%{name} 解除了对域名 %{target} 的屏蔽" @@ -333,6 +338,7 @@ zh-CN: update_announcement_html: "%{name} 更新了公告 %{target}" update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}" update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽" + update_ip_block_html: "%{name} 修改了对 IP %{target} 的规则" update_status_html: "%{name} 刷新了 %{target} 的嘟文" update_user_role_html: "%{name} 更改了 %{target} 角色" empty: 没有找到日志 @@ -786,6 +792,7 @@ zh-CN: title: 时间轴预览 title: 网站设置 trendable_by_default: + desc_html: 特定的热门内容仍可以被明确地禁止 title: 允许在未审查的情况下将话题置为热门 trends: desc_html: 公开显示先前已通过审核的当前热门话题 From 1a5150e9c364635b989cd0983dac259f94dbbea9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 01:15:09 +0200 Subject: [PATCH 199/280] Fix content retention policy settings not accepting a blank value (#19248) --- app/models/form/admin_settings.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 3a7150916..1e6061277 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -67,7 +67,7 @@ class Form::AdminSettings validates :bootstrap_timeline_accounts, existing_username: { multiple: true } validates :show_domain_blocks, inclusion: { in: %w(disabled users all) } validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) } - validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true } + validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true def initialize(_attributes = {}) super From 43b5d5e38d2b8ad8f1d1ad0911c3c1718159c912 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 04:39:33 +0200 Subject: [PATCH 200/280] Add logged-out access to the web UI (#18961) --- app/controllers/home_controller.rb | 18 ++-- app/javascript/mastodon/actions/accounts.js | 6 +- app/javascript/mastodon/actions/markers.js | 10 ++- app/javascript/mastodon/components/logo.js | 4 +- .../mastodon/containers/mastodon.js | 2 +- .../features/account/components/header.js | 30 +++++-- .../features/community_timeline/index.js | 6 ++ .../mastodon/features/directory/index.js | 6 ++ .../mastodon/features/explore/index.js | 6 ++ .../mastodon/features/explore/links.js | 11 +++ .../mastodon/features/explore/results.js | 18 +++- .../mastodon/features/explore/suggestions.js | 11 +++ .../mastodon/features/explore/tags.js | 11 +++ .../features/hashtag_timeline/index.js | 18 +++- .../features/public_timeline/index.js | 6 ++ .../mastodon/features/status/index.js | 24 +++++- .../features/ui/components/columns_area.js | 4 +- .../features/ui/components/compose_panel.js | 22 ++++- .../features/ui/components/document_title.js | 41 --------- .../features/ui/components/link_footer.js | 46 +++++++--- .../ui/components/navigation_panel.js | 83 ++++++++++++++----- .../features/ui/components/sign_in_banner.js | 11 +++ app/javascript/mastodon/features/ui/index.js | 43 ++++++++-- app/javascript/mastodon/initial_state.js | 2 + app/javascript/styles/mastodon/_mixins.scss | 1 + .../styles/mastodon/components.scss | 56 ++++++++++++- app/lib/permalink_redirector.rb | 4 - app/serializers/initial_state_serializer.rb | 11 ++- app/views/home/index.html.haml | 12 ++- package.json | 1 + spec/controllers/home_controller_spec.rb | 20 ++--- spec/lib/permalink_redirector_spec.rb | 4 +- yarn.lock | 20 +++++ 33 files changed, 423 insertions(+), 145 deletions(-) delete mode 100644 app/javascript/mastodon/features/ui/components/document_title.js create mode 100644 app/javascript/mastodon/features/ui/components/sign_in_banner.js diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 7e443eb9e..29478209d 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -2,8 +2,8 @@ class HomeController < ApplicationController before_action :redirect_unauthenticated_to_permalinks! - before_action :authenticate_user! before_action :set_referrer_policy_header + before_action :set_instance_presenter def index @body_classes = 'app-body' @@ -14,20 +14,16 @@ class HomeController < ApplicationController def redirect_unauthenticated_to_permalinks! return if user_signed_in? - redirect_to(PermalinkRedirector.new(request.path).redirect_path || default_redirect_path) - end + redirect_path = PermalinkRedirector.new(request.path).redirect_path - def default_redirect_path - if request.path.start_with?('/web') || whitelist_mode? - new_user_session_path - elsif single_user_mode? - short_account_path(Account.local.without_suspended.where('id > 0').first) - else - about_path - end + redirect_to(redirect_path) if redirect_path.present? end def set_referrer_policy_header response.headers['Referrer-Policy'] = 'origin' end + + def set_instance_presenter + @instance_presenter = InstancePresenter.new + end end diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js index eedf61dc9..f61f06e40 100644 --- a/app/javascript/mastodon/actions/accounts.js +++ b/app/javascript/mastodon/actions/accounts.js @@ -536,10 +536,12 @@ export function expandFollowingFail(id, error) { export function fetchRelationships(accountIds) { return (dispatch, getState) => { - const loadedRelationships = getState().get('relationships'); + const state = getState(); + const loadedRelationships = state.get('relationships'); const newAccountIds = accountIds.filter(id => loadedRelationships.get(id, null) === null); + const signedIn = !!state.getIn(['meta', 'me']); - if (newAccountIds.length === 0) { + if (!signedIn || newAccountIds.length === 0) { return; } diff --git a/app/javascript/mastodon/actions/markers.js b/app/javascript/mastodon/actions/markers.js index 16a3df8f6..b7f406cb8 100644 --- a/app/javascript/mastodon/actions/markers.js +++ b/app/javascript/mastodon/actions/markers.js @@ -1,6 +1,7 @@ import api from '../api'; import { debounce } from 'lodash'; import compareId from '../compare_id'; +import { List as ImmutableList } from 'immutable'; export const MARKERS_FETCH_REQUEST = 'MARKERS_FETCH_REQUEST'; export const MARKERS_FETCH_SUCCESS = 'MARKERS_FETCH_SUCCESS'; @@ -11,7 +12,7 @@ export const synchronouslySubmitMarkers = () => (dispatch, getState) => { const accessToken = getState().getIn(['meta', 'access_token'], ''); const params = _buildParams(getState()); - if (Object.keys(params).length === 0) { + if (Object.keys(params).length === 0 || accessToken === '') { return; } @@ -63,7 +64,7 @@ export const synchronouslySubmitMarkers = () => (dispatch, getState) => { const _buildParams = (state) => { const params = {}; - const lastHomeId = state.getIn(['timelines', 'home', 'items']).find(item => item !== null); + const lastHomeId = state.getIn(['timelines', 'home', 'items'], ImmutableList()).find(item => item !== null); const lastNotificationId = state.getIn(['notifications', 'lastReadId']); if (lastHomeId && compareId(lastHomeId, state.getIn(['markers', 'home'])) > 0) { @@ -82,9 +83,10 @@ const _buildParams = (state) => { }; const debouncedSubmitMarkers = debounce((dispatch, getState) => { - const params = _buildParams(getState()); + const accessToken = getState().getIn(['meta', 'access_token'], ''); + const params = _buildParams(getState()); - if (Object.keys(params).length === 0) { + if (Object.keys(params).length === 0 || accessToken === '') { return; } diff --git a/app/javascript/mastodon/components/logo.js b/app/javascript/mastodon/components/logo.js index d1c7f08a9..3570b3644 100644 --- a/app/javascript/mastodon/components/logo.js +++ b/app/javascript/mastodon/components/logo.js @@ -1,8 +1,8 @@ import React from 'react'; const Logo = () => ( - - + + ); diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js index f4bef4686..08241522c 100644 --- a/app/javascript/mastodon/containers/mastodon.js +++ b/app/javascript/mastodon/containers/mastodon.js @@ -26,7 +26,7 @@ const createIdentityContext = state => ({ signedIn: !!state.meta.me, accountId: state.meta.me, accessToken: state.meta.access_token, - permissions: state.role.permissions, + permissions: state.role ? state.role.permissions : 0, }); export default class Mastodon extends React.PureComponent { diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 8f2753c35..e407a0d55 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { autoPlayGif, me } from 'mastodon/initial_state'; +import { autoPlayGif, me, title, domain } from 'mastodon/initial_state'; import classNames from 'classnames'; import Icon from 'mastodon/components/icon'; import IconButton from 'mastodon/components/icon_button'; @@ -15,6 +15,7 @@ import { NavLink } from 'react-router-dom'; import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container'; import AccountNoteContainer from '../containers/account_note_container'; import { PERMISSION_MANAGE_USERS } from 'mastodon/permissions'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, @@ -54,6 +55,14 @@ const messages = defineMessages({ languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' }, }); +const titleFromAccount = account => { + const displayName = account.get('display_name'); + const acct = account.get('acct') === account.get('username') ? `${account.get('username')}@${domain}` : account.get('acct'); + const prefix = displayName.trim().length === 0 ? account.get('username') : displayName; + + return `${prefix} (@${acct})`; +}; + const dateFormatOptions = { month: 'short', day: 'numeric', @@ -132,6 +141,7 @@ class Header extends ImmutablePureComponent { render () { const { account, hidden, intl, domain } = this.props; + const { signedIn } = this.context.identity; if (!account) { return null; @@ -162,12 +172,12 @@ class Header extends ImmutablePureComponent { } if (me !== account.get('id')) { - if (!account.get('relationship')) { // Wait until the relationship is loaded + if (signedIn && !account.get('relationship')) { // Wait until the relationship is loaded actionBtn = ''; } else if (account.getIn(['relationship', 'requested'])) { actionBtn = ; } else if (!account.getIn(['relationship', 'blocking'])) { - actionBtn = ; + actionBtn = ; } else if (account.getIn(['relationship', 'blocking'])) { actionBtn = ; } @@ -183,7 +193,7 @@ class Header extends ImmutablePureComponent { lockedIcon = ; } - if (account.get('id') !== me) { + if (signedIn && account.get('id') !== me) { menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.props.onMention }); menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.props.onDirect }); menu.push(null); @@ -206,7 +216,7 @@ class Header extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.mutes), to: '/mutes' }); menu.push({ text: intl.formatMessage(messages.blocks), to: '/blocks' }); menu.push({ text: intl.formatMessage(messages.domain_blocks), to: '/domain_blocks' }); - } else { + } else if (signedIn) { if (account.getIn(['relationship', 'following'])) { if (!account.getIn(['relationship', 'muting'])) { if (account.getIn(['relationship', 'showing_reblogs'])) { @@ -239,7 +249,7 @@ class Header extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport }); } - if (account.get('acct') !== account.get('username')) { + if (signedIn && account.get('acct') !== account.get('username')) { const domain = account.get('acct').split('@')[1]; menu.push(null); @@ -298,7 +308,7 @@ class Header extends ImmutablePureComponent { )} - +
)}
@@ -327,7 +337,7 @@ class Header extends ImmutablePureComponent {
)} - {account.get('id') !== me && } + {(account.get('id') !== me && signedIn) && } {account.get('note').length > 0 && account.get('note') !== '

' &&
} @@ -359,6 +369,10 @@ class Header extends ImmutablePureComponent {
)}
+ + + {titleFromAccount(account)} - {title} +
); } diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js index 30f776048..f9d50e64c 100644 --- a/app/javascript/mastodon/features/community_timeline/index.js +++ b/app/javascript/mastodon/features/community_timeline/index.js @@ -9,6 +9,8 @@ import { expandCommunityTimeline } from '../../actions/timelines'; import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectCommunityStream } from '../../actions/streaming'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.community', defaultMessage: 'Local timeline' }, @@ -128,6 +130,10 @@ class CommunityTimeline extends React.PureComponent { emptyMessage={} bindToDocument={!multiColumn} /> + + + {intl.formatMessage(messages.title)} - {title} + ); } diff --git a/app/javascript/mastodon/features/directory/index.js b/app/javascript/mastodon/features/directory/index.js index 94d7d1a9c..36f46c510 100644 --- a/app/javascript/mastodon/features/directory/index.js +++ b/app/javascript/mastodon/features/directory/index.js @@ -13,6 +13,8 @@ import RadioButton from 'mastodon/components/radio_button'; import LoadMore from 'mastodon/components/load_more'; import ScrollContainer from 'mastodon/containers/scroll_container'; import LoadingIndicator from 'mastodon/components/loading_indicator'; +import { title } from 'mastodon/initial_state'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ title: { id: 'column.directory', defaultMessage: 'Browse profiles' }, @@ -165,6 +167,10 @@ class Directory extends React.PureComponent { /> {multiColumn && !pinned ? {scrollableArea} : scrollableArea} + + + {intl.formatMessage(messages.title)} - {title} + ); } diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js index 8082f2d99..e1d1eb563 100644 --- a/app/javascript/mastodon/features/explore/index.js +++ b/app/javascript/mastodon/features/explore/index.js @@ -11,6 +11,8 @@ import Statuses from './statuses'; import Suggestions from './suggestions'; import Search from 'mastodon/features/compose/containers/search_container'; import SearchResults from './results'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'explore.title', defaultMessage: 'Explore' }, @@ -81,6 +83,10 @@ class Explore extends React.PureComponent { + + + {intl.formatMessage(messages.title)} - {title} + )}
diff --git a/app/javascript/mastodon/features/explore/links.js b/app/javascript/mastodon/features/explore/links.js index 6649fb6e4..d3aaa9cdd 100644 --- a/app/javascript/mastodon/features/explore/links.js +++ b/app/javascript/mastodon/features/explore/links.js @@ -5,6 +5,7 @@ import Story from './components/story'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchTrendingLinks } from 'mastodon/actions/trends'; +import { FormattedMessage } from 'react-intl'; const mapStateToProps = state => ({ links: state.getIn(['trends', 'links', 'items']), @@ -28,6 +29,16 @@ class Links extends React.PureComponent { render () { const { isLoading, links } = this.props; + if (!isLoading && links.isEmpty()) { + return ( +
+
+ +
+
+ ); + } + return (
{isLoading ? () : links.map(link => ( diff --git a/app/javascript/mastodon/features/explore/results.js b/app/javascript/mastodon/features/explore/results.js index 1286020f5..0dc108918 100644 --- a/app/javascript/mastodon/features/explore/results.js +++ b/app/javascript/mastodon/features/explore/results.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { FormattedMessage } from 'react-intl'; +import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { expandSearch } from 'mastodon/actions/search'; import Account from 'mastodon/containers/account_container'; @@ -10,10 +10,17 @@ import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import { List as ImmutableList } from 'immutable'; import LoadMore from 'mastodon/components/load_more'; import LoadingIndicator from 'mastodon/components/loading_indicator'; +import { title } from 'mastodon/initial_state'; +import { Helmet } from 'react-helmet'; + +const messages = defineMessages({ + title: { id: 'search_results.title', defaultMessage: 'Search for {q}' }, +}); const mapStateToProps = state => ({ isLoading: state.getIn(['search', 'isLoading']), results: state.getIn(['search', 'results']), + q: state.getIn(['search', 'searchTerm']), }); const appendLoadMore = (id, list, onLoadMore) => { @@ -37,6 +44,7 @@ const renderStatuses = (results, onLoadMore) => appendLoadMore('statuses', resul )), onLoadMore); export default @connect(mapStateToProps) +@injectIntl class Results extends React.PureComponent { static propTypes = { @@ -44,6 +52,8 @@ class Results extends React.PureComponent { isLoading: PropTypes.bool, multiColumn: PropTypes.bool, dispatch: PropTypes.func.isRequired, + q: PropTypes.string, + intl: PropTypes.object, }; state = { @@ -64,7 +74,7 @@ class Results extends React.PureComponent { } render () { - const { isLoading, results } = this.props; + const { intl, isLoading, q, results } = this.props; const { type } = this.state; let filteredResults = ImmutableList(); @@ -106,6 +116,10 @@ class Results extends React.PureComponent {
{isLoading ? : filteredResults}
+ + + {intl.formatMessage(messages.title, { q })} - {title} + ); } diff --git a/app/javascript/mastodon/features/explore/suggestions.js b/app/javascript/mastodon/features/explore/suggestions.js index 0c6a7ef8a..e6ad09974 100644 --- a/app/javascript/mastodon/features/explore/suggestions.js +++ b/app/javascript/mastodon/features/explore/suggestions.js @@ -5,6 +5,7 @@ import AccountCard from 'mastodon/features/directory/components/account_card'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchSuggestions } from 'mastodon/actions/suggestions'; +import { FormattedMessage } from 'react-intl'; const mapStateToProps = state => ({ suggestions: state.getIn(['suggestions', 'items']), @@ -28,6 +29,16 @@ class Suggestions extends React.PureComponent { render () { const { isLoading, suggestions } = this.props; + if (!isLoading && suggestions.isEmpty()) { + return ( +
+
+ +
+
+ ); + } + return (
{isLoading ? : suggestions.map(suggestion => ( diff --git a/app/javascript/mastodon/features/explore/tags.js b/app/javascript/mastodon/features/explore/tags.js index c0ad9fc6e..6cd3a6fb1 100644 --- a/app/javascript/mastodon/features/explore/tags.js +++ b/app/javascript/mastodon/features/explore/tags.js @@ -5,6 +5,7 @@ import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchTrendingHashtags } from 'mastodon/actions/trends'; +import { FormattedMessage } from 'react-intl'; const mapStateToProps = state => ({ hashtags: state.getIn(['trends', 'tags', 'items']), @@ -28,6 +29,16 @@ class Tags extends React.PureComponent { render () { const { isLoading, hashtags } = this.props; + if (!isLoading && hashtags.isEmpty()) { + return ( +
+
+ +
+
+ ); + } + return (
{isLoading ? () : hashtags.map(hashtag => ( diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js index dc8a61640..7069e0341 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.js +++ b/app/javascript/mastodon/features/hashtag_timeline/index.js @@ -14,6 +14,8 @@ import { isEqual } from 'lodash'; import { fetchHashtag, followHashtag, unfollowHashtag } from 'mastodon/actions/tags'; import Icon from 'mastodon/components/icon'; import classNames from 'classnames'; +import { title } from 'mastodon/initial_state'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' }, @@ -31,6 +33,10 @@ class HashtagTimeline extends React.PureComponent { disconnects = []; + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { params: PropTypes.object.isRequired, columnId: PropTypes.string, @@ -158,6 +164,11 @@ class HashtagTimeline extends React.PureComponent { handleFollow = () => { const { dispatch, params, tag } = this.props; const { id } = params; + const { signedIn } = this.context.identity; + + if (!signedIn) { + return; + } if (tag.get('following')) { dispatch(unfollowHashtag(id)); @@ -170,6 +181,7 @@ class HashtagTimeline extends React.PureComponent { const { hasUnread, columnId, multiColumn, tag, intl } = this.props; const { id, local } = this.props.params; const pinned = !!columnId; + const { signedIn } = this.context.identity; let followButton; @@ -177,7 +189,7 @@ class HashtagTimeline extends React.PureComponent { const following = tag.get('following'); followButton = ( - ); @@ -208,6 +220,10 @@ class HashtagTimeline extends React.PureComponent { emptyMessage={} bindToDocument={!multiColumn} /> + + + {`#${id}`} - {title} + ); } diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index b1d5518af..2f926678c 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -9,6 +9,8 @@ import { expandPublicTimeline } from '../../actions/timelines'; import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectPublicStream } from '../../actions/streaming'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.public', defaultMessage: 'Federated timeline' }, @@ -131,6 +133,10 @@ class PublicTimeline extends React.PureComponent { emptyMessage={} bindToDocument={!multiColumn} /> + + + {intl.formatMessage(messages.title)} - {title} + ); } diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 5ff7e060e..748dc7a92 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -56,10 +56,11 @@ import { openModal } from '../../actions/modal'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { HotKeys } from 'react-hotkeys'; -import { boostModal, deleteModal } from '../../initial_state'; +import { boostModal, deleteModal, title } from '../../initial_state'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; import { textForScreenReader, defaultMediaVisibility } from '../../components/status'; import Icon from 'mastodon/components/icon'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' }, @@ -156,6 +157,23 @@ const makeMapStateToProps = () => { return mapStateToProps; }; +const truncate = (str, num) => { + if (str.length > num) { + return str.slice(0, num) + '…'; + } else { + return str; + } +}; + +const titleFromStatus = status => { + const displayName = status.getIn(['account', 'display_name']); + const username = status.getIn(['account', 'username']); + const prefix = displayName.trim().length === 0 ? username : displayName; + const text = status.get('search_index'); + + return `${prefix}: "${truncate(text, 30)}"`; +}; + export default @injectIntl @connect(makeMapStateToProps) class Status extends ImmutablePureComponent { @@ -605,6 +623,10 @@ class Status extends ImmutablePureComponent { {descendants}
+ + + {titleFromStatus(status)} - {title} + ); } diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index 68017a5f1..83e10e003 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -60,6 +60,7 @@ class ColumnsArea extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, }; static propTypes = { @@ -212,11 +213,12 @@ class ColumnsArea extends ImmutablePureComponent { render () { const { columns, children, singleColumn, isModalOpen, intl } = this.props; const { shouldAnimate, renderComposePanel } = this.state; + const { signedIn } = this.context.identity; const columnIndex = getIndex(this.context.router.history.location.pathname); if (singleColumn) { - const floatingActionButton = shouldHideFAB(this.context.router.history.location.pathname) ? null : ; + const floatingActionButton = (!signedIn || shouldHideFAB(this.context.router.history.location.pathname)) ? null : ; const content = columnIndex !== -1 ? ( diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.js b/app/javascript/mastodon/features/ui/components/compose_panel.js index 3d0c48c7a..1c128188f 100644 --- a/app/javascript/mastodon/features/ui/components/compose_panel.js +++ b/app/javascript/mastodon/features/ui/components/compose_panel.js @@ -10,6 +10,10 @@ import { changeComposing } from 'mastodon/actions/compose'; export default @connect() class ComposePanel extends React.PureComponent { + static contextTypes = { + identity: PropTypes.object.isRequired, + }; + static propTypes = { dispatch: PropTypes.func.isRequired, }; @@ -23,11 +27,25 @@ class ComposePanel extends React.PureComponent { } render() { + const { signedIn } = this.context.identity; + return (
- - + + {!signedIn && ( + +
+ + )} + + {signedIn && ( + + + + + )} +
); diff --git a/app/javascript/mastodon/features/ui/components/document_title.js b/app/javascript/mastodon/features/ui/components/document_title.js deleted file mode 100644 index cd081b20c..000000000 --- a/app/javascript/mastodon/features/ui/components/document_title.js +++ /dev/null @@ -1,41 +0,0 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import { title } from 'mastodon/initial_state'; - -const mapStateToProps = state => ({ - unread: state.getIn(['missed_updates', 'unread']), -}); - -export default @connect(mapStateToProps) -class DocumentTitle extends PureComponent { - - static propTypes = { - unread: PropTypes.number.isRequired, - }; - - componentDidMount () { - this._sideEffects(); - } - - componentDidUpdate() { - this._sideEffects(); - } - - _sideEffects () { - const { unread } = this.props; - - if (unread > 99) { - document.title = `(*) ${title}`; - } else if (unread > 0) { - document.title = `(${unread}) ${title}`; - } else { - document.title = title; - } - } - - render () { - return null; - } - -} diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index bbb9b122a..95cd6cf8e 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -49,20 +49,46 @@ class LinkFooter extends React.PureComponent { render () { const { withHotkeys } = this.props; + const { signedIn, permissions } = this.context.identity; + const items = []; + + if ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { + items.push(); + } + + if (withHotkeys) { + items.push(); + } + + if (signedIn) { + items.push(); + } + + if (!limitedFederationMode) { + items.push(); + } + + if (profileDirectory) { + items.push(); + } + + items.push(); + items.push(); + + if (signedIn) { + items.push(); + } + + items.push(); + + if (signedIn) { + items.push(); + } return (
    - {((this.context.identity.permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) &&
  • ·
  • } - {withHotkeys &&
  • ·
  • } -
  • ·
  • - {!limitedFederationMode &&
  • ·
  • } - {profileDirectory &&
  • ·
  • } -
  • ·
  • -
  • ·
  • -
  • ·
  • -
  • ·
  • -
  • +
  • {items.reduce((prev, curr) => [prev, ' · ', curr])}

diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index fe4ed5d77..00ae04761 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -1,5 +1,6 @@ import React from 'react'; -import { NavLink, withRouter } from 'react-router-dom'; +import PropTypes from 'prop-types'; +import { NavLink, Link } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import Icon from 'mastodon/components/icon'; import { showTrends } from 'mastodon/initial_state'; @@ -7,30 +8,68 @@ import NotificationsCounterIcon from './notifications_counter_icon'; import FollowRequestsNavLink from './follow_requests_nav_link'; import ListPanel from './list_panel'; import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container'; +import Logo from 'mastodon/components/logo'; +import SignInBanner from './sign_in_banner'; -const NavigationPanel = () => ( -

- - - - - - - - - - +export default class NavigationPanel extends React.Component { - + static contextTypes = { + router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, + }; -
+ render () { + const { signedIn } = this.context.identity; - - + return ( +
+ - {showTrends &&
} - {showTrends && } -
-); +
-export default withRouter(NavigationPanel); + {signedIn && ( + + + + + + )} + + + + + + {!signedIn && ( + +
+ +
+ )} + + {signedIn && ( + + + + + + + + +
+ + + +
+ )} + + {showTrends && ( + +
+ + + )} +
+ ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.js b/app/javascript/mastodon/features/ui/components/sign_in_banner.js new file mode 100644 index 000000000..c8403a8ad --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/sign_in_banner.js @@ -0,0 +1,11 @@ +import React from 'react'; +import { FormattedMessage } from 'react-intl'; + +const SignInBanner = () => ( +
+

+ +
+); + +export default SignInBanner; diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 9a901f12a..5825db1e4 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -20,7 +20,6 @@ import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodo import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers'; import UploadArea from './components/upload_area'; import ColumnsAreaContainer from './containers/columns_area_container'; -import DocumentTitle from './components/document_title'; import PictureInPicture from 'mastodon/features/picture_in_picture'; import { Compose, @@ -53,8 +52,9 @@ import { Explore, FollowRecommendations, } from './util/async-components'; -import { me } from '../../initial_state'; +import { me, title } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; +import { Helmet } from 'react-helmet'; // Dummy import, to make sure that ends up in the application bundle. // Without this it ends up in ~8 very commonly used bundles. @@ -110,6 +110,10 @@ const keyMap = { class SwitchingColumnsArea extends React.PureComponent { + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { children: PropTypes.node, location: PropTypes.object, @@ -145,12 +149,25 @@ class SwitchingColumnsArea extends React.PureComponent { render () { const { children, mobile } = this.props; - const redirect = mobile ? : ; + const { signedIn } = this.context.identity; + + let redirect; + + if (signedIn) { + if (mobile) { + redirect = ; + } else { + redirect = ; + } + } else { + redirect = ; + } return ( {redirect} + @@ -208,6 +225,7 @@ class UI extends React.PureComponent { static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, }; static propTypes = { @@ -343,6 +361,8 @@ class UI extends React.PureComponent { } componentDidMount () { + const { signedIn } = this.context.identity; + window.addEventListener('focus', this.handleWindowFocus, false); window.addEventListener('blur', this.handleWindowBlur, false); window.addEventListener('beforeunload', this.handleBeforeUnload, false); @@ -359,16 +379,18 @@ class UI extends React.PureComponent { } // On first launch, redirect to the follow recommendations page - if (this.props.firstLaunch) { + if (signedIn && this.props.firstLaunch) { this.context.router.history.replace('/start'); this.props.dispatch(closeOnboarding()); } - this.props.dispatch(fetchMarkers()); - this.props.dispatch(expandHomeTimeline()); - this.props.dispatch(expandNotifications()); + if (signedIn) { + this.props.dispatch(fetchMarkers()); + this.props.dispatch(expandHomeTimeline()); + this.props.dispatch(expandNotifications()); - setTimeout(() => this.props.dispatch(fetchRules()), 3000); + setTimeout(() => this.props.dispatch(fetchRules()), 3000); + } this.hotkeys.__mousetrap__.stopCallback = (e, element) => { return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName); @@ -546,7 +568,10 @@ class UI extends React.PureComponent { - + + + {title} +
); diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index 709975270..9cc75b6cb 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -3,6 +3,7 @@ const initialState = element && JSON.parse(element.textContent); const getMeta = (prop) => initialState && initialState.meta && initialState.meta[prop]; +export const domain = getMeta('domain'); export const reduceMotion = getMeta('reduce_motion'); export const autoPlayGif = getMeta('auto_play_gif'); export const displayMedia = getMeta('display_media'); @@ -26,5 +27,6 @@ export const title = getMeta('title'); export const cropImages = getMeta('crop_images'); export const disableSwiping = getMeta('disable_swiping'); export const languages = initialState && initialState.languages; +export const server = initialState && initialState.server; export default initialState; diff --git a/app/javascript/styles/mastodon/_mixins.scss b/app/javascript/styles/mastodon/_mixins.scss index 68cad0fde..dcfab6bd0 100644 --- a/app/javascript/styles/mastodon/_mixins.scss +++ b/app/javascript/styles/mastodon/_mixins.scss @@ -20,6 +20,7 @@ font-family: inherit; background: $ui-base-color; color: $darker-text-color; + border-radius: 4px; font-size: 14px; margin: 0; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f5377a858..1f1a5a5ca 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -126,6 +126,7 @@ &:hover { border-color: lighten($ui-primary-color, 4%); color: lighten($darker-text-color, 4%); + text-decoration: none; } &:disabled { @@ -700,6 +701,15 @@ transition: height 0.4s ease, opacity 0.4s ease; } +.sign-in-banner { + padding: 10px; + + p { + color: $darker-text-color; + margin-bottom: 20px; + } +} + .emojione { font-size: inherit; vertical-align: middle; @@ -2214,6 +2224,7 @@ a.account__display-name { > .scrollable { background: $ui-base-color; + border-radius: 0 0 4px 4px; } } @@ -2660,6 +2671,26 @@ a.account__display-name { height: calc(100% - 10px); overflow-y: hidden; + .hero-widget { + box-shadow: none; + + &__text, + &__img, + &__img img { + border-radius: 0; + } + + &__text { + padding: 15px; + color: $secondary-text-color; + + strong { + font-weight: 700; + color: $primary-text-color; + } + } + } + .navigation-bar { padding-top: 20px; padding-bottom: 20px; @@ -2667,10 +2698,6 @@ a.account__display-name { min-height: 20px; } - .flex-spacer { - background: transparent; - } - .compose-form { flex: 1; overflow-y: hidden; @@ -2709,6 +2736,14 @@ a.account__display-name { flex: 0 0 auto; } + .logo { + height: 30px; + width: auto; + } +} + +.navigation-panel, +.compose-panel { hr { flex: 0 0 auto; border: 0; @@ -2836,6 +2871,7 @@ a.account__display-name { box-sizing: border-box; width: 100%; background: lighten($ui-base-color, 4%); + border-radius: 4px 4px 0 0; color: $highlight-text-color; cursor: pointer; flex: 0 0 auto; @@ -3031,6 +3067,17 @@ a.account__display-name { color: $highlight-text-color; } } + + &--logo { + background: transparent; + padding: 10px; + + &:hover, + &:focus, + &:active { + background: transparent; + } + } } .column-link__icon { @@ -3551,6 +3598,7 @@ a.status-card.compact:hover { display: flex; font-size: 16px; background: lighten($ui-base-color, 4%); + border-radius: 4px 4px 0 0; flex: 0 0 auto; cursor: pointer; position: relative; diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb index e48bce060..6d15f3963 100644 --- a/app/lib/permalink_redirector.rb +++ b/app/lib/permalink_redirector.rb @@ -17,10 +17,6 @@ class PermalinkRedirector find_status_url_by_id(path_segments[2]) elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/ find_account_url_by_id(path_segments[2]) - elsif path_segments[1] == 'timelines' && path_segments[2] == 'tag' && path_segments[3].present? - find_tag_url_by_name(path_segments[3]) - elsif path_segments[1] == 'tags' && path_segments[2].present? - find_tag_url_by_name(path_segments[2]) end end end diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 5eda87757..df076ffc6 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -1,9 +1,11 @@ # frozen_string_literal: true class InitialStateSerializer < ActiveModel::Serializer + include RoutingHelper + attributes :meta, :compose, :accounts, :media_attachments, :settings, - :languages + :languages, :server has_one :push_subscription, serializer: REST::WebPushSubscriptionSerializer has_one :role, serializer: REST::RoleSerializer @@ -82,6 +84,13 @@ class InitialStateSerializer < ActiveModel::Serializer LanguagesHelper::SUPPORTED_LOCALES.map { |(key, value)| [key, value[0], value[1]] } end + def server + { + hero: instance_presenter.hero&.file&.url || instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), + description: instance_presenter.site_short_description.presence || I18n.t('about.about_mastodon_html'), + } + end + private def instance_presenter diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml index 3d6283fba..19c5191d8 100644 --- a/app/views/home/index.html.haml +++ b/app/views/home/index.html.haml @@ -1,10 +1,14 @@ - content_for :header_tags do - = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' + - if user_signed_in? + = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' + + = render partial: 'shared/og' %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} + = render_initial_state = javascript_pack_tag 'application', crossorigin: 'anonymous' diff --git a/package.json b/package.json index ca1786038..bef027d26 100644 --- a/package.json +++ b/package.json @@ -92,6 +92,7 @@ "punycode": "^2.1.0", "react": "^16.14.0", "react-dom": "^16.14.0", + "react-helmet": "^6.1.0", "react-hotkeys": "^1.1.4", "react-immutable-proptypes": "^2.2.0", "react-immutable-pure-component": "^2.2.2", diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb index 70c5c42c5..d845ae01d 100644 --- a/spec/controllers/home_controller_spec.rb +++ b/spec/controllers/home_controller_spec.rb @@ -7,27 +7,21 @@ RSpec.describe HomeController, type: :controller do subject { get :index } context 'when not signed in' do - context 'when requested path is tag timeline' do - it 'redirects to the tag\'s permalink' do - @request.path = '/web/timelines/tag/name' - is_expected.to redirect_to '/tags/name' - end - end - - it 'redirects to about page' do + it 'returns http success' do @request.path = '/' - is_expected.to redirect_to(about_path) + is_expected.to have_http_status(:success) end end context 'when signed in' do let(:user) { Fabricate(:user) } - before { sign_in(user) } + before do + sign_in(user) + end - it 'assigns @body_classes' do - subject - expect(assigns(:body_classes)).to eq 'app-body' + it 'returns http success' do + is_expected.to have_http_status(:success) end end end diff --git a/spec/lib/permalink_redirector_spec.rb b/spec/lib/permalink_redirector_spec.rb index b916b33b2..abda57da4 100644 --- a/spec/lib/permalink_redirector_spec.rb +++ b/spec/lib/permalink_redirector_spec.rb @@ -21,7 +21,7 @@ describe PermalinkRedirector do it 'returns path for legacy tag links' do redirector = described_class.new('web/timelines/tag/hoge') - expect(redirector.redirect_path).to eq '/tags/hoge' + expect(redirector.redirect_path).to be_nil end it 'returns path for pretty account links' do @@ -36,7 +36,7 @@ describe PermalinkRedirector do it 'returns path for pretty tag links' do redirector = described_class.new('web/tags/hoge') - expect(redirector.redirect_path).to eq '/tags/hoge' + expect(redirector.redirect_path).to be_nil end end end diff --git a/yarn.lock b/yarn.lock index 90302b284..3628dd560 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9194,6 +9194,21 @@ react-event-listener@^0.6.0: prop-types "^15.6.0" warning "^4.0.1" +react-fast-compare@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + react-hotkeys@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-1.1.4.tgz#a0712aa2e0c03a759fd7885808598497a4dace72" @@ -9368,6 +9383,11 @@ react-select@^5.4.0: prop-types "^15.6.0" react-transition-group "^4.3.0" +react-side-effect@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a" + integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw== + react-sparklines@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz#9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60" From e623c302d5d4dfc05689eb8fb8e051e30fc38ec8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 06:21:51 +0200 Subject: [PATCH 201/280] Add sign-up button to logged-out web UI (#19250) --- .../mastodon/components/column_header.js | 3 +- app/javascript/mastodon/components/poll.js | 6 +++- .../mastodon/components/status_content.js | 3 +- .../features/ui/components/link_footer.js | 2 +- .../features/ui/components/sign_in_banner.js | 2 ++ app/javascript/mastodon/initial_state.js | 1 + .../styles/mastodon/components.scss | 29 +++++++++++++++++++ app/serializers/initial_state_serializer.rb | 1 + 8 files changed, 43 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/components/column_header.js b/app/javascript/mastodon/components/column_header.js index cbbc490a8..5b2e16627 100644 --- a/app/javascript/mastodon/components/column_header.js +++ b/app/javascript/mastodon/components/column_header.js @@ -17,6 +17,7 @@ class ColumnHeader extends React.PureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { @@ -145,7 +146,7 @@ class ColumnHeader extends React.PureComponent { collapsedContent.push(moveButtons); } - if (children || (multiColumn && this.props.onPin)) { + if (this.context.identity.signedIn && (children || (multiColumn && this.props.onPin))) { collapseButton = ( } + {!showResults && } {showResults && !this.props.disabled && · } {votesCount} {poll.get('expires_at') && · {timeRemaining}} diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 43e938d4e..a88c5f084 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -15,6 +15,7 @@ class StatusContent extends React.PureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { @@ -180,7 +181,7 @@ class StatusContent extends React.PureComponent { const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); - const renderTranslate = this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && intl.locale !== status.get('language'); + const renderTranslate = this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && intl.locale !== status.get('language'); const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); const languageName = language ? language[2] : status.get('language'); diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index 95cd6cf8e..8817bb6c1 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -56,7 +56,7 @@ class LinkFooter extends React.PureComponent { items.push(); } - if (withHotkeys) { + if (signedIn && withHotkeys) { items.push(); } diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.js b/app/javascript/mastodon/features/ui/components/sign_in_banner.js index c8403a8ad..5ff4ee2a8 100644 --- a/app/javascript/mastodon/features/ui/components/sign_in_banner.js +++ b/app/javascript/mastodon/features/ui/components/sign_in_banner.js @@ -1,10 +1,12 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; +import { registrationsOpen } from 'mastodon/initial_state'; const SignInBanner = () => (

+
); diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index 9cc75b6cb..81607a03b 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -14,6 +14,7 @@ export const deleteModal = getMeta('delete_modal'); export const me = getMeta('me'); export const searchEnabled = getMeta('search_enabled'); export const limitedFederationMode = getMeta('limited_federation_mode'); +export const registrationsOpen = getMeta('registrations_open'); export const repository = getMeta('repository'); export const source_url = getMeta('source_url'); export const version = getMeta('version'); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 1f1a5a5ca..87ec6bb8a 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -134,6 +134,26 @@ } } + &.button-tertiary { + background: transparent; + padding: 6px 17px; + color: $highlight-text-color; + border: 1px solid $highlight-text-color; + + &:active, + &:focus, + &:hover { + background: $ui-highlight-color; + color: $primary-text-color; + border: 0; + padding: 7px 18px; + } + + &:disabled { + opacity: 0.5; + } + } + &.button--block { display: block; width: 100%; @@ -708,6 +728,10 @@ color: $darker-text-color; margin-bottom: 20px; } + + .button { + margin-bottom: 10px; + } } .emojione { @@ -3671,6 +3695,11 @@ a.status-card.compact:hover { background: lighten($ui-base-color, 8%); } } + + &:disabled { + color: $dark-text-color; + cursor: default; + } } .column-header__collapsible { diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index df076ffc6..87f4db83d 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -26,6 +26,7 @@ class InitialStateSerializer < ActiveModel::Serializer mascot: instance_presenter.mascot&.file&.url, profile_directory: Setting.profile_directory, trends: Setting.trends, + registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode, } if object.current_account From 36f4c32a38ed85e5e658b34d36eac40a6147bc0c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 06:22:12 +0200 Subject: [PATCH 202/280] Change path of privacy policy page (#19249) --- app/controllers/about_controller.rb | 6 ++--- app/controllers/privacy_controller.rb | 22 +++++++++++++++++++ .../features/ui/components/link_footer.js | 2 +- app/views/layouts/public.html.haml | 5 ++--- .../show.html.haml} | 0 app/views/settings/deletes/show.html.haml | 2 +- .../confirmation_instructions.html.haml | 2 +- .../confirmation_instructions.text.erb | 4 ++-- config/locales/en.yml | 9 ++++---- config/routes.rb | 4 +++- spec/controllers/about_controller_spec.rb | 10 --------- 11 files changed, 38 insertions(+), 28 deletions(-) create mode 100644 app/controllers/privacy_controller.rb rename app/views/{about/terms.html.haml => privacy/show.html.haml} (100%) diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb index d7e78d6b9..4fc2fbe34 100644 --- a/app/controllers/about_controller.rb +++ b/app/controllers/about_controller.rb @@ -8,10 +8,10 @@ class AboutController < ApplicationController before_action :require_open_federation!, only: [:show, :more] before_action :set_body_classes, only: :show before_action :set_instance_presenter - before_action :set_expires_in, only: [:more, :terms] + before_action :set_expires_in, only: [:more] before_action :set_registration_form_time, only: :show - skip_before_action :require_functional!, only: [:more, :terms] + skip_before_action :require_functional!, only: [:more] def show; end @@ -26,8 +26,6 @@ class AboutController < ApplicationController @blocks = DomainBlock.with_user_facing_limitations.by_severity if display_blocks? end - def terms; end - helper_method :display_blocks? helper_method :display_blocks_rationale? helper_method :public_fetch_mode? diff --git a/app/controllers/privacy_controller.rb b/app/controllers/privacy_controller.rb new file mode 100644 index 000000000..ced84dbe5 --- /dev/null +++ b/app/controllers/privacy_controller.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class PrivacyController < ApplicationController + layout 'public' + + before_action :set_instance_presenter + before_action :set_expires_in + + skip_before_action :require_functional! + + def show; end + + private + + def set_instance_presenter + @instance_presenter = InstancePresenter.new + end + + def set_expires_in + expires_in 0, public: true + end +end diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index 8817bb6c1..dd05d03dd 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -73,7 +73,7 @@ class LinkFooter extends React.PureComponent { } items.push(); - items.push(); + items.push(); if (signedIn) { items.push(); diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml index 83640de1a..14f86c970 100644 --- a/app/views/layouts/public.html.haml +++ b/app/views/layouts/public.html.haml @@ -33,8 +33,7 @@ .column-0 %h4= t 'footer.resources' %ul - %li= link_to t('about.terms'), terms_path - %li= link_to t('about.privacy_policy'), terms_path + %li= link_to t('about.privacy_policy'), privacy_policy_path .column-1 %h4= t 'footer.developers' %ul @@ -57,6 +56,6 @@ .legal-xs = link_to "v#{Mastodon::Version.to_s}", Mastodon::Version.source_url · - = link_to t('about.privacy_policy'), terms_path + = link_to t('about.privacy_policy'), privacy_policy_path = render template: 'layouts/application' diff --git a/app/views/about/terms.html.haml b/app/views/privacy/show.html.haml similarity index 100% rename from app/views/about/terms.html.haml rename to app/views/privacy/show.html.haml diff --git a/app/views/settings/deletes/show.html.haml b/app/views/settings/deletes/show.html.haml index 08792e0af..ddf090879 100644 --- a/app/views/settings/deletes/show.html.haml +++ b/app/views/settings/deletes/show.html.haml @@ -16,7 +16,7 @@ %li.positive-hint= t('deletes.warning.email_contact_html', email: Setting.site_contact_email) %li.positive-hint= t('deletes.warning.username_available') - %p.hint= t('deletes.warning.more_details_html', terms_path: terms_path) + %p.hint= t('deletes.warning.more_details_html', terms_path: privacy_policy_path) %hr.spacer/ diff --git a/app/views/user_mailer/confirmation_instructions.html.haml b/app/views/user_mailer/confirmation_instructions.html.haml index 39a83faff..447e689b4 100644 --- a/app/views/user_mailer/confirmation_instructions.html.haml +++ b/app/views/user_mailer/confirmation_instructions.html.haml @@ -77,4 +77,4 @@ %tbody %tr %td.column-cell.text-center - %p= t 'devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: terms_url + %p= t 'devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: privacy_policy_url diff --git a/app/views/user_mailer/confirmation_instructions.text.erb b/app/views/user_mailer/confirmation_instructions.text.erb index aad91cd9d..a1b2ba7d2 100644 --- a/app/views/user_mailer/confirmation_instructions.text.erb +++ b/app/views/user_mailer/confirmation_instructions.text.erb @@ -6,7 +6,7 @@ => <%= confirmation_url(@resource, confirmation_token: @token, redirect_to_app: @resource.created_by_application ? 'true' : nil) %> -<%= strip_tags(t('devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: terms_url)) %> +<%= strip_tags(t('devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: privacy_policy_url)) %> => <%= about_more_url %> -=> <%= terms_url %> +=> <%= privacy_policy_url %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 9f047f523..dd341e0c8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -28,7 +28,7 @@ en: learn_more: Learn more logged_in_as_html: You are currently logged in as %{username}. logout_before_registering: You are already logged in. - privacy_policy: Privacy policy + privacy_policy: Privacy Policy rules: Server rules rules_html: 'Below is a summary of rules you need to follow if you want to have an account on this server of Mastodon:' see_whats_happening: See what's happening @@ -39,7 +39,6 @@ en: other: posts status_count_before: Who published tagline: Decentralized social network - terms: Terms of service unavailable_content: Moderated servers unavailable_content_description: domain: Server @@ -797,8 +796,8 @@ en: desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. title: Short server description site_terms: - desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags - title: Custom terms of service + desc_html: You can write your own privacy policy. You can use HTML tags + title: Custom privacy policy site_title: Server name thumbnail: desc_html: Used for previews via OpenGraph and API. 1200x630px recommended @@ -1720,7 +1719,7 @@ en:

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

- title: "%{instance} Terms of Service and Privacy Policy" + title: "%{instance} Privacy Policy" themes: contrast: Mastodon (High contrast) default: Mastodon (Dark) diff --git a/config/routes.rb b/config/routes.rb index 9491c5177..5d0b3004b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -640,7 +640,9 @@ Rails.application.routes.draw do get '/about', to: 'about#show' get '/about/more', to: 'about#more' - get '/terms', to: 'about#terms' + + get '/privacy-policy', to: 'privacy#show', as: :privacy_policy + get '/terms', to: redirect('/privacy-policy') match '/', via: [:post, :put, :patch, :delete], to: 'application#raise_not_found', format: false match '*unmatched_route', via: :all, to: 'application#raise_not_found', format: false diff --git a/spec/controllers/about_controller_spec.rb b/spec/controllers/about_controller_spec.rb index 03dddd8c1..40e395a64 100644 --- a/spec/controllers/about_controller_spec.rb +++ b/spec/controllers/about_controller_spec.rb @@ -31,16 +31,6 @@ RSpec.describe AboutController, type: :controller do end end - describe 'GET #terms' do - before do - get :terms - end - - it 'returns http success' do - expect(response).to have_http_status(200) - end - end - describe 'helper_method :new_user' do it 'returns a new User' do user = @controller.view_context.new_user From c8245e64c5173f34401c562fe32551dcab8e68b7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 08:55:14 +0200 Subject: [PATCH 203/280] Fix wrong logo on start screen in web UI (#19254) --- .../mastodon/features/follow_recommendations/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/follow_recommendations/index.js b/app/javascript/mastodon/features/follow_recommendations/index.js index b5a71aef5..32b55eeb3 100644 --- a/app/javascript/mastodon/features/follow_recommendations/index.js +++ b/app/javascript/mastodon/features/follow_recommendations/index.js @@ -10,7 +10,6 @@ import { requestBrowserPermission } from 'mastodon/actions/notifications'; import { markAsPartial } from 'mastodon/actions/timelines'; import Column from 'mastodon/features/ui/components/column'; import Account from './components/account'; -import Logo from 'mastodon/components/logo'; import imageGreeting from 'mastodon/../images/elephant_ui_greeting.svg'; import Button from 'mastodon/components/button'; @@ -78,7 +77,10 @@ class FollowRecommendations extends ImmutablePureComponent {
- + + + +

From cf5d27c3b72742b0e59b0a45d0c088d37a9db051 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 16:27:50 +0200 Subject: [PATCH 204/280] New Crowdin updates (#19252) * New translations en.yml (Thai) * New translations en.yml (Greek) * New translations en.yml (Afrikaans) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.yml (Catalan) * New translations en.json (Danish) * New translations en.yml (Danish) * New translations en.json (Greek) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.json (Finnish) * New translations en.yml (Finnish) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.json (Afrikaans) * New translations en.yml (French) * New translations en.json (Hebrew) * New translations en.json (Czech) * New translations en.json (Thai) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Chinese Simplified) * New translations en.yml (Ido) * New translations en.json (Bulgarian) * New translations en.json (Tamil) * New translations en.json (Esperanto) * New translations en.yml (Spanish) * New translations en.json (French) * New translations en.yml (Turkish) * New translations en.json (Dutch) * New translations en.yml (Albanian) * New translations en.yml (Ukrainian) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations en.json (Sinhala) * New translations en.json (Romanian) * New translations en.yml (Romanian) * New translations en.json (Armenian) * New translations en.yml (Armenian) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.yml (Slovenian) * New translations en.yml (Vietnamese) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.json (Persian) * New translations en.yml (Persian) * New translations en.json (Serbian (Cyrillic)) * New translations en.yml (Dutch) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.json (Georgian) * New translations en.yml (Georgian) * New translations en.yml (Korean) * New translations en.json (Lithuanian) * New translations en.yml (Lithuanian) * New translations en.json (Macedonian) * New translations en.yml (Macedonian) * New translations en.json (Norwegian) * New translations en.yml (Slovak) * New translations en.yml (Norwegian) * New translations en.json (Punjabi) * New translations en.yml (Punjabi) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Russian) * New translations en.json (Slovak) * New translations en.yml (Tamil) * New translations en.json (Breton) * New translations en.yml (Esperanto) * New translations en.json (Uyghur) * New translations en.yml (Uyghur) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.json (Tatar) * New translations en.yml (Tatar) * New translations en.json (Malayalam) * New translations en.yml (Malayalam) * New translations en.yml (Breton) * New translations en.json (Welsh) * New translations en.yml (Sinhala) * New translations en.json (Cornish) * New translations en.yml (Cornish) * New translations en.json (Kannada) * New translations en.yml (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.yml (Asturian) * New translations en.json (Occitan) * New translations en.yml (Welsh) * New translations en.yml (English, United Kingdom) * New translations en.yml (Spanish, Argentina) * New translations en.json (Kazakh) * New translations en.json (Spanish, Mexico) * New translations en.yml (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.yml (Bengali) * New translations en.json (Marathi) * New translations en.yml (Marathi) * New translations en.json (Croatian) * New translations en.yml (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.json (English, United Kingdom) * New translations en.json (Estonian) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.json (Hindi) * New translations en.yml (Hindi) * New translations en.json (Malay) * New translations en.yml (Malay) * New translations en.json (Telugu) * New translations en.yml (Telugu) * New translations en.yml (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.json (Sardinian) * New translations en.yml (Kabyle) * New translations en.json (Kabyle) * New translations en.yml (Sanskrit) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sardinian) * New translations en.json (Sanskrit) * New translations en.yml (Corsican) * New translations en.json (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Taigi) * New translations en.yml (Taigi) * New translations en.json (Silesian) * New translations en.yml (Silesian) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.yml (Ido) * New translations en.yml (Ukrainian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Catalan) * New translations en.yml (Greek) * New translations en.yml (Korean) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Chinese Simplified) * New translations en.yml (Albanian) * New translations en.yml (Russian) * New translations en.yml (Slovenian) * New translations en.yml (Polish) * New translations en.yml (Vietnamese) * New translations en.yml (Icelandic) * New translations en.yml (Latvian) * New translations en.yml (Czech) * New translations simple_form.en.yml (Czech) * New translations activerecord.en.yml (Czech) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Turkish) * New translations en.yml (Danish) * New translations en.yml (Japanese) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 6 ++- app/javascript/mastodon/locales/ar.json | 6 ++- app/javascript/mastodon/locales/ast.json | 6 ++- app/javascript/mastodon/locales/bg.json | 6 ++- app/javascript/mastodon/locales/bn.json | 6 ++- app/javascript/mastodon/locales/br.json | 6 ++- app/javascript/mastodon/locales/ca.json | 6 ++- app/javascript/mastodon/locales/ckb.json | 6 ++- app/javascript/mastodon/locales/co.json | 6 ++- app/javascript/mastodon/locales/cs.json | 6 ++- app/javascript/mastodon/locales/cy.json | 6 ++- app/javascript/mastodon/locales/da.json | 6 ++- app/javascript/mastodon/locales/de.json | 6 ++- .../mastodon/locales/defaultMessages.json | 52 ++++++++++++++++++- app/javascript/mastodon/locales/el.json | 6 ++- app/javascript/mastodon/locales/en-GB.json | 6 ++- app/javascript/mastodon/locales/en.json | 6 ++- app/javascript/mastodon/locales/eo.json | 6 ++- app/javascript/mastodon/locales/es-AR.json | 6 ++- app/javascript/mastodon/locales/es-MX.json | 8 ++- app/javascript/mastodon/locales/es.json | 6 ++- app/javascript/mastodon/locales/et.json | 6 ++- app/javascript/mastodon/locales/eu.json | 6 ++- app/javascript/mastodon/locales/fa.json | 6 ++- app/javascript/mastodon/locales/fi.json | 6 ++- app/javascript/mastodon/locales/fr.json | 6 ++- app/javascript/mastodon/locales/fy.json | 6 ++- app/javascript/mastodon/locales/ga.json | 6 ++- app/javascript/mastodon/locales/gd.json | 6 ++- app/javascript/mastodon/locales/gl.json | 12 +++-- app/javascript/mastodon/locales/he.json | 6 ++- app/javascript/mastodon/locales/hi.json | 6 ++- app/javascript/mastodon/locales/hr.json | 6 ++- app/javascript/mastodon/locales/hu.json | 6 ++- app/javascript/mastodon/locales/hy.json | 6 ++- app/javascript/mastodon/locales/id.json | 6 ++- app/javascript/mastodon/locales/io.json | 6 ++- app/javascript/mastodon/locales/is.json | 6 ++- app/javascript/mastodon/locales/it.json | 6 ++- app/javascript/mastodon/locales/ja.json | 6 ++- app/javascript/mastodon/locales/ka.json | 6 ++- app/javascript/mastodon/locales/kab.json | 6 ++- app/javascript/mastodon/locales/kk.json | 6 ++- app/javascript/mastodon/locales/kn.json | 6 ++- app/javascript/mastodon/locales/ko.json | 6 ++- app/javascript/mastodon/locales/ku.json | 6 ++- app/javascript/mastodon/locales/kw.json | 6 ++- app/javascript/mastodon/locales/lt.json | 6 ++- app/javascript/mastodon/locales/lv.json | 6 ++- app/javascript/mastodon/locales/mk.json | 6 ++- app/javascript/mastodon/locales/ml.json | 6 ++- app/javascript/mastodon/locales/mr.json | 6 ++- app/javascript/mastodon/locales/ms.json | 6 ++- app/javascript/mastodon/locales/nl.json | 6 ++- app/javascript/mastodon/locales/nn.json | 6 ++- app/javascript/mastodon/locales/no.json | 6 ++- app/javascript/mastodon/locales/oc.json | 6 ++- app/javascript/mastodon/locales/pa.json | 6 ++- app/javascript/mastodon/locales/pl.json | 6 ++- app/javascript/mastodon/locales/pt-BR.json | 6 ++- app/javascript/mastodon/locales/pt-PT.json | 6 ++- app/javascript/mastodon/locales/ro.json | 6 ++- app/javascript/mastodon/locales/ru.json | 6 ++- app/javascript/mastodon/locales/sa.json | 6 ++- app/javascript/mastodon/locales/sc.json | 6 ++- app/javascript/mastodon/locales/si.json | 6 ++- app/javascript/mastodon/locales/sk.json | 6 ++- app/javascript/mastodon/locales/sl.json | 6 ++- app/javascript/mastodon/locales/sq.json | 6 ++- app/javascript/mastodon/locales/sr-Latn.json | 6 ++- app/javascript/mastodon/locales/sr.json | 6 ++- app/javascript/mastodon/locales/sv.json | 6 ++- app/javascript/mastodon/locales/szl.json | 6 ++- app/javascript/mastodon/locales/ta.json | 6 ++- app/javascript/mastodon/locales/tai.json | 6 ++- app/javascript/mastodon/locales/te.json | 6 ++- app/javascript/mastodon/locales/th.json | 6 ++- app/javascript/mastodon/locales/tr.json | 6 ++- app/javascript/mastodon/locales/tt.json | 6 ++- app/javascript/mastodon/locales/ug.json | 6 ++- app/javascript/mastodon/locales/uk.json | 6 ++- app/javascript/mastodon/locales/ur.json | 6 ++- app/javascript/mastodon/locales/vi.json | 6 ++- app/javascript/mastodon/locales/zgh.json | 6 ++- app/javascript/mastodon/locales/zh-CN.json | 6 ++- app/javascript/mastodon/locales/zh-HK.json | 6 ++- app/javascript/mastodon/locales/zh-TW.json | 6 ++- config/locales/activerecord.cs.yml | 9 ++++ config/locales/ar.yml | 7 --- config/locales/ast.yml | 2 - config/locales/bg.yml | 2 - config/locales/bn.yml | 2 - config/locales/br.yml | 2 - config/locales/ca.yml | 9 ++-- config/locales/ckb.yml | 7 --- config/locales/co.yml | 7 --- config/locales/cs.yml | 32 ++++++++++-- config/locales/cy.yml | 7 --- config/locales/da.yml | 7 ++- config/locales/de.yml | 6 --- config/locales/el.yml | 9 ++-- config/locales/eo.yml | 7 --- config/locales/es-AR.yml | 7 ++- config/locales/es-MX.yml | 6 --- config/locales/es.yml | 6 --- config/locales/et.yml | 7 --- config/locales/eu.yml | 7 --- config/locales/fa.yml | 7 --- config/locales/fi.yml | 7 --- config/locales/fr.yml | 6 --- config/locales/ga.yml | 1 - config/locales/gd.yml | 6 --- config/locales/gl.yml | 9 ++-- config/locales/he.yml | 6 --- config/locales/hi.yml | 1 - config/locales/hr.yml | 2 - config/locales/hu.yml | 6 --- config/locales/hy.yml | 5 -- config/locales/id.yml | 7 --- config/locales/io.yml | 7 ++- config/locales/is.yml | 7 ++- config/locales/it.yml | 9 ++-- config/locales/ja.yml | 49 ++++++++++------- config/locales/ka.yml | 7 --- config/locales/kab.yml | 4 -- config/locales/kk.yml | 7 --- config/locales/ko.yml | 9 ++-- config/locales/ku.yml | 9 ++-- config/locales/lt.yml | 7 --- config/locales/lv.yml | 9 ++-- config/locales/ml.yml | 2 - config/locales/ms.yml | 2 - config/locales/nl.yml | 6 --- config/locales/nn.yml | 7 --- config/locales/no.yml | 7 --- config/locales/oc.yml | 7 --- config/locales/pl.yml | 7 ++- config/locales/pt-BR.yml | 7 --- config/locales/pt-PT.yml | 6 --- config/locales/ro.yml | 4 -- config/locales/ru.yml | 7 ++- config/locales/sc.yml | 7 --- config/locales/si.yml | 7 --- config/locales/simple_form.cs.yml | 2 + config/locales/sk.yml | 7 --- config/locales/sl.yml | 7 ++- config/locales/sq.yml | 9 ++-- config/locales/sr-Latn.yml | 5 -- config/locales/sr.yml | 7 --- config/locales/sv.yml | 7 --- config/locales/ta.yml | 2 - config/locales/te.yml | 2 - config/locales/th.yml | 7 --- config/locales/tr.yml | 9 ++-- config/locales/tt.yml | 1 - config/locales/uk.yml | 11 ++-- config/locales/vi.yml | 7 ++- config/locales/zh-CN.yml | 7 ++- config/locales/zh-HK.yml | 7 --- config/locales/zh-TW.yml | 7 ++- 160 files changed, 623 insertions(+), 468 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 8e2361941..54780cc9f 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 81c1f8104..d2709c957 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -227,8 +227,8 @@ "getting_started.heading": "استعدّ للبدء", "getting_started.invite": "دعوة أشخاص", "getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على جيت هب {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "الأمان", - "getting_started.terms": "شروط الخدمة", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "أو {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "تعذر العثور على نتائج تتضمن هذه المصطلحات", "search_results.statuses": "المنشورات", "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "افتح الواجهة الإدارية لـ @{name}", "status.admin_status": "افتح هذا المنشور على واجهة الإشراف", "status.block": "احجب @{name}", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 5c128ef20..acf1495b4 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -227,8 +227,8 @@ "getting_started.heading": "Entamu", "getting_started.invite": "Convidar a persones", "getting_started.open_source_notice": "Mastodon ye software de códigu abiertu. Pues collaborar o informar de fallos en GitHub: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Axustes de la cuenta", - "getting_started.terms": "Términos del serviciu", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "ensin {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nun se pudo atopar nada con esos términos de busca", "search_results.statuses": "Barritos", "search_results.statuses_fts_disabled": "Esti sirvidor de Mastodon tien activada la gueta de barritos pol so conteníu.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultáu} other {resultaos}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Bloquiar a @{name}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 84007763c..992d906d3 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -227,8 +227,8 @@ "getting_started.heading": "Първи стъпки", "getting_started.invite": "Поканване на хора", "getting_started.open_source_notice": "Mastodon е софтуер с отворен код. Можеш да помогнеш или да докладваш за проблеми в Github: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Условия за ползване", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Не е намерено нищо за това търсене", "search_results.statuses": "Публикации", "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Отваряне на интерфейс за модериране за @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Блокиране на @{name}", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 388b2a814..6157928e2 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -227,8 +227,8 @@ "getting_started.heading": "শুরু করা", "getting_started.invite": "অন্যদের আমন্ত্রণ করুন", "getting_started.open_source_notice": "মাস্টাডন একটি মুক্ত সফটওয়্যার। তৈরিতে সাহায্য করতে বা কোনো সমস্যা সম্পর্কে জানাতে আমাদের গিটহাবে যেতে পারেন {github}।", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "নিরাপত্তা", - "getting_started.terms": "ব্যবহারের নিয়মাবলী", "hashtag.column_header.tag_mode.all": "এবং {additional}", "hashtag.column_header.tag_mode.any": "অথবা {additional}", "hashtag.column_header.tag_mode.none": "বাদ দিয়ে {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "টুট", "search_results.statuses_fts_disabled": "তাদের সামগ্রী দ্বারা টুটগুলি অনুসন্ধান এই মস্তোডন সার্ভারে সক্ষম নয়।", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {ফলাফল} other {ফলাফল}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name} র জন্য পরিচালনার ইন্টারফেসে ঢুকুন", "status.admin_status": "যায় লেখাটি পরিচালনার ইন্টারফেসে খুলুন", "status.block": "@{name} কে ব্লক করুন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index a1f703cb2..4d5a943e3 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -227,8 +227,8 @@ "getting_started.heading": "Loc'hañ", "getting_started.invite": "Pediñ tud", "getting_started.open_source_notice": "Mastodoñ zo ur meziant digor e darzh. Gallout a rit kenoberzhiañ dezhañ pe danevellañ kudennoù war GitHub e {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Arventennoù ar gont", - "getting_started.terms": "Divizoù gwerzhañ hollek", "hashtag.column_header.tag_mode.all": "ha {additional}", "hashtag.column_header.tag_mode.any": "pe {additional}", "hashtag.column_header.tag_mode.none": "hep {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "a doudoù", "search_results.statuses_fts_disabled": "Klask toudoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {disoc'h} other {a zisoc'h}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Digeriñ etrefas evezherezh evit @{name}", "status.admin_status": "Digeriñ an toud e-barzh an etrefas evezherezh", "status.block": "Berzañ @{name}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 5dbad8d94..2a218ea84 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primers passos", "getting_started.invite": "Convidar gent", "getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir-hi o informar de problemes a GitHub a {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Configuració del compte", - "getting_started.terms": "Condicions de servei", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "No s'ha pogut trobar res per a aquests termes de cerca", "search_results.statuses": "Publicacions", "search_results.statuses_fts_disabled": "La cerca de publicacions pel seu contingut no està habilitada en aquest servidor Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Obre l'interfície de moderació per a @{name}", "status.admin_status": "Obrir aquesta publicació a la interfície de moderació", "status.block": "Bloqueja @{name}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 638a58a12..0eca1dab4 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -227,8 +227,8 @@ "getting_started.heading": "دەست پێکردن", "getting_started.invite": "بانگهێشتکردنی خەڵک", "getting_started.open_source_notice": "ماستۆدۆن نەرمەکالایەکی سەرچاوەی کراوەیە. دەتوانیت بەشداری بکەیت یان گوزارشت بکەیت لەسەر کێشەکانی لە پەڕەی گیتهاب {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ڕێکخستنەکانی هەژمارە", - "getting_started.terms": "مەرجەکانی خزمەتگوزاری", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بەبێ {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "توتەکان", "search_results.statuses_fts_disabled": "گەڕانی توتەکان بە ناوەڕۆکیان لەسەر ئەم ڕاژەی ماستۆدۆن چالاک نەکراوە.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "کردنەوەی میانڕەوی بەڕێوەبەر بۆ @{name}", "status.admin_status": "ئەم توتە بکەوە لە ناو ڕووکاری بەڕیوەبەر", "status.block": "@{name} ئاستەنگ بکە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 7075784bc..8b6592401 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -227,8 +227,8 @@ "getting_started.heading": "Per principià", "getting_started.invite": "Invità ghjente", "getting_started.open_source_notice": "Mastodon ghjè un lugiziale liberu. Pudete cuntribuisce à u codice o a traduzione, o palisà un bug, nant'à GitHub: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sicurità", - "getting_started.terms": "Cundizione di u serviziu", "hashtag.column_header.tag_mode.all": "è {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Statuti", "search_results.statuses_fts_disabled": "A ricerca di i cuntinuti di i statuti ùn hè micca attivata nant'à stu servore Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {risultatu} other {risultati}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Apre l'interfaccia di muderazione per @{name}", "status.admin_status": "Apre stu statutu in l'interfaccia di muderazione", "status.block": "Bluccà @{name}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index ccadcec26..c83e0b5b5 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -227,8 +227,8 @@ "getting_started.heading": "Začínáme", "getting_started.invite": "Pozvat lidi", "getting_started.open_source_notice": "Mastodon je otevřený software. Přispět do jeho vývoje nebo hlásit chyby můžete na GitHubu {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Nastavení účtu", - "getting_started.terms": "Podmínky používání", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "nebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Pro tyto hledané výrazy nebylo nic nenalezeno", "search_results.statuses": "Příspěvky", "search_results.statuses_fts_disabled": "Vyhledávání příspěvků podle jejich obsahu není na tomto Mastodon serveru povoleno.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledků} other {výsledků}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Otevřít moderátorské rozhraní pro @{name}", "status.admin_status": "Otevřít tento příspěvek v moderátorském rozhraní", "status.block": "Zablokovat @{name}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index c777dcd6a..f73b8cb48 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -227,8 +227,8 @@ "getting_started.heading": "Dechrau", "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.privacy_policy": "Privacy Policy", "getting_started.security": "Diogelwch", - "getting_started.terms": "Telerau Gwasanaeth", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "neu {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn", "search_results.statuses": "Postiadau", "search_results.statuses_fts_disabled": "Nid yw chwilio postiadau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {canlyniad} one {canlyniad} two {ganlyniad} other {o ganlyniadau}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}", "status.admin_status": "Agor y post hwn yn y rhyngwyneb goruwchwylio", "status.block": "Blocio @{name}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index e57b301dc..5ae3983a3 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -227,8 +227,8 @@ "getting_started.heading": "Startmenu", "getting_started.invite": "Invitér folk", "getting_started.open_source_notice": "Mastodon er open-source software. Du kan bidrage eller anmelde fejl via GitHub {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoindstillinger", - "getting_started.terms": "Tjenestevilkår", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uden {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ingen resultater for disse søgeord", "search_results.statuses": "Indlæg", "search_results.statuses_fts_disabled": "Søgning på indlæg efter deres indhold ikke aktiveret på denne Mastodon-server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Åbn modereringsbrugerflade for @{name}", "status.admin_status": "Åbn dette indlæg i modereringsbrugerfladen", "status.block": "Blokér @{name}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index a2f8f087d..6c72c3afc 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -227,8 +227,8 @@ "getting_started.heading": "Erste Schritte", "getting_started.invite": "Leute einladen", "getting_started.open_source_notice": "Mastodon ist quelloffene Software. Du kannst auf GitHub unter {github} dazu beitragen oder Probleme melden.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Konto & Sicherheit", - "getting_started.terms": "Nutzungsbedingungen", "hashtag.column_header.tag_mode.all": "und {additional}", "hashtag.column_header.tag_mode.any": "oder {additional}", "hashtag.column_header.tag_mode.none": "ohne {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nichts für diese Suchbegriffe gefunden", "search_results.statuses": "Beiträge", "search_results.statuses_fts_disabled": "Die Suche für Beiträge nach ihrem Inhalt ist auf diesem Mastodon-Server deaktiviert.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Öffne Moderationsoberfläche für @{name}", "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", "status.block": "Blockiere @{name}", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 6b27f7877..eba878bbd 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1842,6 +1842,19 @@ }, { "descriptors": [ + { + "defaultMessage": "Nothing is trending right now. Check back later!", + "id": "empty_column.explore_statuses" + } + ], + "path": "app/javascript/mastodon/features/explore/links.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Search for {q}", + "id": "search_results.title" + }, { "defaultMessage": "Could not find anything for these search terms", "id": "search_results.nothing_found" @@ -1874,6 +1887,24 @@ ], "path": "app/javascript/mastodon/features/explore/statuses.json" }, + { + "descriptors": [ + { + "defaultMessage": "Nothing is trending right now. Check back later!", + "id": "empty_column.explore_statuses" + } + ], + "path": "app/javascript/mastodon/features/explore/suggestions.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Nothing is trending right now. Check back later!", + "id": "empty_column.explore_statuses" + } + ], + "path": "app/javascript/mastodon/features/explore/tags.json" + }, { "descriptors": [ { @@ -3678,8 +3709,8 @@ "id": "navigation_bar.apps" }, { - "defaultMessage": "Terms of service", - "id": "getting_started.terms" + "defaultMessage": "Privacy Policy", + "id": "getting_started.privacy_policy" }, { "defaultMessage": "Developers", @@ -3824,6 +3855,23 @@ ], "path": "app/javascript/mastodon/features/ui/components/report_modal.json" }, + { + "descriptors": [ + { + "defaultMessage": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "id": "sign_in_banner.text" + }, + { + "defaultMessage": "Sign in", + "id": "sign_in_banner.sign_in" + }, + { + "defaultMessage": "Create account", + "id": "sign_in_banner.create_account" + } + ], + "path": "app/javascript/mastodon/features/ui/components/sign_in_banner.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 02f071ede..c03a93076 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -227,8 +227,8 @@ "getting_started.heading": "Αφετηρία", "getting_started.invite": "Προσκάλεσε κόσμο", "getting_started.open_source_notice": "Το Mastodon είναι ελεύθερο λογισμικό. Μπορείς να συνεισφέρεις ή να αναφέρεις ζητήματα στο GitHub στο {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Ασφάλεια", - "getting_started.terms": "Όροι χρήσης", "hashtag.column_header.tag_mode.all": "και {additional}", "hashtag.column_header.tag_mode.any": "ή {additional}", "hashtag.column_header.tag_mode.none": "χωρίς {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Τουτ", "search_results.statuses_fts_disabled": "Η αναζήτηση τουτ βάσει του περιεχόμενού τους δεν είναι ενεργοποιημένη σε αυτό τον κόμβο.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {αποτελέσματα} one {αποτέλεσμα} other {αποτελέσματα}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Άνοιγμα λειτουργίας διαμεσολάβησης για τον/την @{name}", "status.admin_status": "Άνοιγμα αυτής της δημοσίευσης στη λειτουργία διαμεσολάβησης", "status.block": "Αποκλεισμός @{name}", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 7dc245a38..3e418b9d3 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Posts", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index c7b31e6f4..b4bba1863 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Account settings", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Posts", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this post in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index bb770767c..b86fcb703 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -227,8 +227,8 @@ "getting_started.heading": "Por komenci", "getting_started.invite": "Inviti homojn", "getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en GitHub je {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sekureco", - "getting_started.terms": "Kondiĉoj de la servo", "hashtag.column_header.tag_mode.all": "kaj {additional}", "hashtag.column_header.tag_mode.any": "aŭ {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Povis trovi nenion por ĉi tiuj serĉaj terminoj", "search_results.statuses": "Mesaĝoj", "search_results.statuses_fts_disabled": "Serĉi mesaĝojn laŭ enhavo ne estas ebligita en ĉi tiu Mastodon-servilo.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezultoj}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Malfermi la kontrolan interfacon por @{name}", "status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco", "status.block": "Bloki @{name}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index bbaa3591e..9d1477d86 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -227,8 +227,8 @@ "getting_started.heading": "Introducción", "getting_started.invite": "Invitar gente", "getting_started.open_source_notice": "Mastodon es software libre. Podés contribuir o informar errores en {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Configuración de la cuenta", - "getting_started.terms": "Términos del servicio", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", "search_results.statuses": "Mensajes", "search_results.statuses_fts_disabled": "No se pueden buscar mensajes por contenido en este servidor de Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interface de moderación para @{name}", "status.admin_status": "Abrir este mensaje en la interface de moderación", "status.block": "Bloquear a @{name}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 36ac226b5..48424f74e 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeros pasos", "getting_started.invite": "Invitar usuarios", "getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguridad", - "getting_started.terms": "Términos de servicio", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "No se pudo encontrar nada para estos términos de busqueda", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Buscar toots por su contenido no está disponible en este servidor de Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interfaz de moderación para @{name}", "status.admin_status": "Abrir este estado en la interfaz de moderación", "status.block": "Bloquear a @{name}", @@ -522,7 +526,7 @@ "status.show_original": "Mostrar original", "status.show_thread": "Mostrar hilo", "status.translate": "Traducir", - "status.translated_from": "Traducido de {lang}", + "status.translated_from": "Traducido del {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index af6a2ba97..b65dbbbd8 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeros pasos", "getting_started.invite": "Invitar usuarios", "getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguridad", - "getting_started.terms": "Términos de servicio", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", "search_results.statuses": "Publicaciones", "search_results.statuses_fts_disabled": "Buscar publicaciones por su contenido no está disponible en este servidor de Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interfaz de moderación para @{name}", "status.admin_status": "Abrir este estado en la interfaz de moderación", "status.block": "Bloquear a @{name}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 86dc95495..11c932346 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -227,8 +227,8 @@ "getting_started.heading": "Alustamine", "getting_started.invite": "Kutsu inimesi", "getting_started.open_source_notice": "Mastodon on avatud lähtekoodiga tarkvara. Saate panustada või teatada probleemidest GitHubis {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Turvalisus", - "getting_started.terms": "Kasutustingimused", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "või {additional}", "hashtag.column_header.tag_mode.none": "ilma {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuudid", "search_results.statuses_fts_disabled": "Tuutsude otsimine nende sisu järgi ei ole sellel Mastodoni serveril sisse lülitatud.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {tulemus} other {tulemust}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ava moderaatoriliides kasutajale @{name}", "status.admin_status": "Ava see staatus moderaatoriliites", "status.block": "Blokeeri @{name}", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 77259248c..e4ffd2234 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -227,8 +227,8 @@ "getting_started.heading": "Menua", "getting_started.invite": "Gonbidatu jendea", "getting_started.open_source_notice": "Mastodon software librea da. Ekarpenak egin ditzakezu edo akatsen berri eman GitHub bidez: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Segurtasuna", - "getting_started.terms": "Erabilera baldintzak", "hashtag.column_header.tag_mode.all": "eta {osagarria}", "hashtag.column_header.tag_mode.any": "edo {osagarria}", "hashtag.column_header.tag_mode.none": "gabe {osagarria}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ez da emaitzarik aurkitu bilaketa-termino horientzat", "search_results.statuses": "Bidalketak", "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du bidalketen edukiaren bilaketa gaitu.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea", "status.admin_status": "Ireki bidalketa hau moderazio interfazean", "status.block": "Blokeatu @{name}", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 7046b9a14..25b2fb3b4 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -227,8 +227,8 @@ "getting_started.heading": "آغاز کنید", "getting_started.invite": "دعوت از دیگران", "getting_started.open_source_notice": "ماستودون نرم‌افزاری آزاد است. می‌توانید روی {github} در آن مشارکت کرده یا مشکلاتش را گزارش دهید.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "تنظیمات حساب", - "getting_started.terms": "شرایط خدمات", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "چیزی برای این عبارت جست‌وجو یافت نشد", "search_results.statuses": "فرسته‌ها", "search_results.statuses_fts_disabled": "جست‌وجوی محتوای فرسته‌ها در این کارساز ماستودون به کار انداخته نشده است.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "گشودن واسط مدیریت برای ‎@{name}", "status.admin_status": "گشودن این فرسته در واسط مدیریت", "status.block": "مسدود کردن ‎@{name}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 1cbea9808..d3829ae91 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -227,8 +227,8 @@ "getting_started.heading": "Näin pääset alkuun", "getting_started.invite": "Kutsu ihmisiä", "getting_started.open_source_notice": "Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHubissa: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Tiliasetukset", - "getting_started.terms": "Käyttöehdot", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "tai {additional}", "hashtag.column_header.tag_mode.none": "ilman {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Näille hakusanoille ei löytynyt mitään", "search_results.statuses": "Viestit", "search_results.statuses_fts_disabled": "Viestien haku sisällön perusteella ei ole käytössä tällä Mastodon-palvelimella.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {tulos} other {tulokset}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}", "status.admin_status": "Avaa julkaisu moderointinäkymässä", "status.block": "Estä @{name}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 5c615041f..2befc94cb 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Pour commencer", "getting_started.invite": "Inviter des gens", "getting_started.open_source_notice": "Mastodon est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via {github} sur GitHub.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sécurité", - "getting_started.terms": "Conditions d’utilisation", "hashtag.column_header.tag_mode.all": "et {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sans {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Aucun résultat avec ces mots-clefs", "search_results.statuses": "Messages", "search_results.statuses_fts_disabled": "La recherche de messages par leur contenu n'est pas activée sur ce serveur Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ouvrir l’interface de modération pour @{name}", "status.admin_status": "Ouvrir ce message dans l’interface de modération", "status.block": "Bloquer @{name}", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index b47dc584c..2c740bf85 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -227,8 +227,8 @@ "getting_started.heading": "Utein sette", "getting_started.invite": "Minsken útnûgje", "getting_started.open_source_notice": "Mastodon is iepen boarne software. Jo kinne sels bydrage of problemen oanjaan troch GitHub op {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Account ynstellings", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "sûnder {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Posts", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 91f802f70..9e8011971 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postálacha", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 93a53f960..70ec2cbb0 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -227,8 +227,8 @@ "getting_started.heading": "Toiseach", "getting_started.invite": "Thoir cuireadh do dhaoine", "getting_started.open_source_notice": "’S e bathar-bog le bun-tùs fosgailte a th’ ann am Mastodon. ’S urrainn dhut cuideachadh leis no aithris a dhèanamh air duilgheadasan air GitHub fo {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Roghainnean a’ chunntais", - "getting_started.terms": "Teirmichean na seirbheise", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "no {additional}", "hashtag.column_header.tag_mode.none": "às aonais {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Cha do lorg sinn dad dha na h-abairtean-luirg seo", "search_results.statuses": "Postaichean", "search_results.statuses_fts_disabled": "Chan eil lorg phostaichean a-rèir an susbaint an comas air an fhrithealaiche Mastodon seo.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {toradh} two {thoradh} few {toraidhean} other {toradh}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Fosgail eadar-aghaidh na maorsainneachd dha @{name}", "status.admin_status": "Fosgail am post seo ann an eadar-aghaidh na maorsainneachd", "status.block": "Bac @{name}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 6b7cf5bed..9ed8c2872 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeiros pasos", "getting_started.invite": "Convidar persoas", "getting_started.open_source_notice": "Mastodon é software de código aberto. Podes contribuír ou informar de fallos en GitHub en {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguranza", - "getting_started.terms": "Termos do servizo", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Non atopamos nada con estos termos de busca", "search_results.statuses": "Publicacións", "search_results.statuses_fts_disabled": "Procurar publicacións polo seu contido non está activado neste servidor do Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interface de moderación para @{name}", "status.admin_status": "Abrir esta publicación na interface de moderación", "status.block": "Bloquear a @{name}", @@ -519,10 +523,10 @@ "status.show_less_all": "Amosar menos para todos", "status.show_more": "Amosar máis", "status.show_more_all": "Amosar máis para todos", - "status.show_original": "Show original", + "status.show_original": "Mostrar o orixinal", "status.show_thread": "Amosar fío", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traducir", + "status.translated_from": "Traducido do {lang}", "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index a27e0e827..5e0323585 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -227,8 +227,8 @@ "getting_started.heading": "בואו נתחיל", "getting_started.invite": "להזמין אנשים", "getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "הגדרות חשבון", - "getting_started.terms": "תנאי שימוש", "hashtag.column_header.tag_mode.all": "ו- {additional}", "hashtag.column_header.tag_mode.any": "או {additional}", "hashtag.column_header.tag_mode.none": "ללא {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "לא נמצא דבר עבור תנאי חיפוש אלה", "search_results.statuses": "פוסטים", "search_results.statuses_fts_disabled": "חיפוש פוסטים לפי תוכן לא מאופשר בשרת מסטודון זה.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "פתח/י ממשק ניהול עבור @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "חסימת @{name}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 9c2b9e618..2d222d4cb 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -227,8 +227,8 @@ "getting_started.heading": "पहले कदम रखें", "getting_started.invite": "दोस्तों को आमंत्रित करें", "getting_started.open_source_notice": "मास्टोडॉन एक मुक्त स्रोत सॉफ्टवेयर है. आप गिटहब {github} पर इस सॉफ्टवेयर में योगदान या किसी भी समस्या को सूचित कर सकते है.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "अकाउंट सेटिंग्स", - "getting_started.terms": "सेवा की शर्तें", "hashtag.column_header.tag_mode.all": "और {additional}", "hashtag.column_header.tag_mode.any": "या {additional}", "hashtag.column_header.tag_mode.none": "बिना {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index ebb102b44..4356fd297 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Počnimo", "getting_started.invite": "Pozovi ljude", "getting_started.open_source_notice": "Mastodon je softver otvorenog kôda. Možete pridonijeti ili prijaviti probleme na GitHubu na {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Postavke računa", - "getting_started.terms": "Uvjeti pružanja usluga", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "ili {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 08df3cbc9..3a183f304 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -227,8 +227,8 @@ "getting_started.heading": "Első lépések", "getting_started.invite": "Mások meghívása", "getting_started.open_source_notice": "A Mastodon nyílt forráskódú szoftver. Közreműködhetsz vagy problémákat jelenthetsz a GitHubon: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Fiókbeállítások", - "getting_started.terms": "Felhasználási feltételek", "hashtag.column_header.tag_mode.all": "és {additional}", "hashtag.column_header.tag_mode.any": "vagy {additional}", "hashtag.column_header.tag_mode.none": "{additional} nélkül", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nincs találat ezekre a keresési kifejezésekre", "search_results.statuses": "Bejegyzések", "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Moderációs felület megnyitása @{name} fiókhoz", "status.admin_status": "Bejegyzés megnyitása a moderációs felületen", "status.block": "@{name} letiltása", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 44fd15696..48e5bc53f 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -227,8 +227,8 @@ "getting_started.heading": "Ինչպէս սկսել", "getting_started.invite": "Հրաւիրել մարդկանց", "getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրէպներ զեկուցել ԳիթՀաբում՝ {github}։", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Հաշուի կարգաւորումներ", - "getting_started.terms": "Ծառայութեան պայմանները", "hashtag.column_header.tag_mode.all": "եւ {additional}", "hashtag.column_header.tag_mode.any": "կամ {additional}", "hashtag.column_header.tag_mode.none": "առանց {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Գրառումներ", "search_results.statuses_fts_disabled": "Այս հանգոյցում միացուած չէ ըստ բովանդակութեան գրառում փնտրելու հնարաւորութիւնը։", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {արդիւնք} other {արդիւնք}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Բացել @{name} օգտատիրոջ մոդերացիայի դիմերէսը։", "status.admin_status": "Բացել այս գրառումը մոդերատորի դիմերէսի մէջ", "status.block": "Արգելափակել @{name}֊ին", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 986e06c24..f81b7d9ad 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -227,8 +227,8 @@ "getting_started.heading": "Mulai", "getting_started.invite": "Undang orang", "getting_started.open_source_notice": "Mastodon adalah perangkat lunak yang bersifat terbuka. Anda dapat berkontribusi atau melaporkan permasalahan/bug di Github {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Keamanan", - "getting_started.terms": "Ketentuan layanan", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Tidak dapat menemukan apapun untuk istilah-istilah pencarian ini", "search_results.statuses": "Toot", "search_results.statuses_fts_disabled": "Pencarian toot berdasarkan konten tidak diaktifkan di server Mastadon ini.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Buka antar muka moderasi untuk @{name}", "status.admin_status": "Buka status ini dalam antar muka moderasi", "status.block": "Blokir @{name}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 485b35f1b..9f61d8297 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -227,8 +227,8 @@ "getting_started.heading": "Debuto", "getting_started.invite": "Invitez personi", "getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoopcioni", - "getting_started.terms": "Servkondicioni", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ne povas ganar irgo per ca trovvorti", "search_results.statuses": "Posti", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Apertez jerintervizajo por @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Restriktez @{name}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index c58085f1e..d5ed6300d 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -227,8 +227,8 @@ "getting_started.heading": "Komast í gang", "getting_started.invite": "Bjóða fólki", "getting_started.open_source_notice": "Mastodon er opinn og frjáls hugbúnaður. Þú getur lagt þitt af mörkum eða tilkynnt um vandamál á GitHub á slóðinni {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Stillingar notandaaðgangs", - "getting_started.terms": "Þjónustuskilmálar", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eða {additional}", "hashtag.column_header.tag_mode.none": "án {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Gat ekki fundið neitt sem samsvarar þessum leitarorðum", "search_results.statuses": "Færslur", "search_results.statuses_fts_disabled": "Að leita í efni færslna er ekki virkt á þessum Mastodon-þjóni.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {niðurstaða} other {niðurstöður}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Opna umsjónarviðmót fyrir @{name}", "status.admin_status": "Opna þessa færslu í umsjónarviðmótinu", "status.block": "Útiloka @{name}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 4376c0cff..6e2b97463 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -227,8 +227,8 @@ "getting_started.heading": "Come iniziare", "getting_started.invite": "Invita qualcuno", "getting_started.open_source_notice": "Mastodon è un software open source. Puoi contribuire o segnalare errori su GitHub all'indirizzo {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sicurezza", - "getting_started.terms": "Condizioni del servizio", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Impossibile trovare qualcosa per questi termini di ricerca", "search_results.statuses": "Post", "search_results.statuses_fts_disabled": "La ricerca di post per il loro contenuto non è abilitata su questo server Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Apri interfaccia di moderazione per @{name}", "status.admin_status": "Apri questo post nell'interfaccia di moderazione", "status.block": "Blocca @{name}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 9fcd80947..06f0e320e 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -227,8 +227,8 @@ "getting_started.heading": "スタート", "getting_started.invite": "招待", "getting_started.open_source_notice": "Mastodonはオープンソースソフトウェアです。誰でもGitHub ({github}) から開発に参加したり、問題を報告したりできます。", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "アカウント設定", - "getting_started.terms": "プライバシーポリシー", "hashtag.column_header.tag_mode.all": "と{additional}", "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", @@ -472,7 +472,11 @@ "search_results.nothing_found": "この検索条件では何も見つかりませんでした", "search_results.statuses": "投稿", "search_results.statuses_fts_disabled": "このサーバーでは投稿本文の検索は利用できません。", + "search_results.title": "Search for {q}", "search_results.total": "{count, number}件の結果", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name}さんのモデレーション画面を開く", "status.admin_status": "この投稿をモデレーション画面で開く", "status.block": "@{name}さんをブロック", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index f10c97e1c..941c2e832 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -227,8 +227,8 @@ "getting_started.heading": "დაწყება", "getting_started.invite": "ხალხის მოწვევა", "getting_started.open_source_notice": "მასტოდონი ღია პროგრამაა. შეგიძლიათ შეუწყოთ ხელი ან შექმნათ პრობემის რეპორტი {github}-ზე.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "უსაფრთხოება", - "getting_started.terms": "მომსახურების პირობები", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "ტუტები", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "დაბლოკე @{name}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 644dff4b5..11603156c 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -227,8 +227,8 @@ "getting_started.heading": "Bdu", "getting_started.invite": "Snebgi-d imdanen", "getting_started.open_source_notice": "Maṣṭudun d aseɣzan s uɣbalu yeldin. Tzemreḍ ad tɛiwneḍ neɣ ad temmleḍ uguren deg GitHub {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Iɣewwaṛen n umiḍan", - "getting_started.terms": "Tiwetlin n useqdec", "hashtag.column_header.tag_mode.all": "d {additional}", "hashtag.column_header.tag_mode.any": "neɣ {additional}", "hashtag.column_header.tag_mode.none": "war {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tibeṛṛaniyin", "search_results.statuses_fts_disabled": "Anadi ɣef tjewwiqin s ugbur-nsent ur yermid ara deg uqeddac-agi n Maṣṭudun.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {n ugemmuḍ} other {n yigemmuḍen}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Seḥbes @{name}", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 5e77a5959..d7d63fae7 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -227,8 +227,8 @@ "getting_started.heading": "Желіде", "getting_started.invite": "Адам шақыру", "getting_started.open_source_notice": "Mastodon - ашық кодты құрылым. Түзету енгізу немесе ұсыныстарды GitHub арқылы жасаңыз {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Қауіпсіздік", - "getting_started.terms": "Қызмет көрсету шарттары", "hashtag.column_header.tag_mode.all": "және {additional}", "hashtag.column_header.tag_mode.any": "немесе {additional}", "hashtag.column_header.tag_mode.none": "{additional} болмай", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Жазбалар", "search_results.statuses_fts_disabled": "Mastodon серверінде постты толық мәтінмен іздей алмайсыз.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {нәтиже} other {нәтиже}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name} үшін модерация интерфейсін аш", "status.admin_status": "Бұл жазбаны модерация интерфейсінде аш", "status.block": "Бұғаттау @{name}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 15cafe8f9..c91aac867 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 4d2d5e449..4910b9a88 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -227,8 +227,8 @@ "getting_started.heading": "시작", "getting_started.invite": "초대", "getting_started.open_source_notice": "Mastodon은 오픈 소스 소프트웨어입니다. 누구나 GitHub({github})에서 개발에 참여하거나, 문제를 보고할 수 있습니다.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "계정 설정", - "getting_started.terms": "이용 약관", "hashtag.column_header.tag_mode.all": "그리고 {additional}", "hashtag.column_header.tag_mode.any": "또는 {additional}", "hashtag.column_header.tag_mode.none": "{additional}를 제외하고", @@ -472,7 +472,11 @@ "search_results.nothing_found": "검색어에 대한 결과를 찾을 수 없습니다", "search_results.statuses": "게시물", "search_results.statuses_fts_disabled": "이 마스토돈 서버에선 게시물의 내용을 통한 검색이 활성화 되어 있지 않습니다.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number}건의 결과", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name}에 대한 중재 화면 열기", "status.admin_status": "중재 화면에서 이 게시물 열기", "status.block": "@{name} 차단", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 41e512432..19d960a0a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -227,8 +227,8 @@ "getting_started.heading": "Destpêkirin", "getting_started.invite": "Kesan vexwîne", "getting_started.open_source_notice": "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di {github} de an jî dikarî tevkariyê bikî.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sazkariyên ajimêr", - "getting_started.terms": "Mercên karûberan", "hashtag.column_header.tag_mode.all": "û {additional}", "hashtag.column_header.tag_mode.any": "an {additional}", "hashtag.column_header.tag_mode.none": "bêyî {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ji bo van peyvên lêgerînê tiştek nehate dîtin", "search_results.statuses": "Şandî", "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke", "status.admin_status": "Vê şandîyê di navrûya venihêrtinê de veke", "status.block": "@{name} asteng bike", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 34f72a365..b63008eaa 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -227,8 +227,8 @@ "getting_started.heading": "Dhe dhalleth", "getting_started.invite": "Gelwel tus", "getting_started.open_source_notice": "Mastodon yw medhelweyth a fenten ygor. Hwi a yll kevri po reportya kudynnow dre GitHub dhe {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Dewisyow akont", - "getting_started.terms": "Ambosow an gonis", "hashtag.column_header.tag_mode.all": "ha(g) {additional}", "hashtag.column_header.tag_mode.any": "po {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postow", "search_results.statuses_fts_disabled": "Nyns yw hwilas postow der aga dalgh gweythresys y'n leuren Mastodon ma.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {sewyans} other {sewyans}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ygeri ynterfas koswa rag @{name}", "status.admin_status": "Ygeri an post ma y'n ynterfas koswa", "status.block": "Lettya @{name}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index e01e35714..2c8bf82a5 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 83d30aa0f..d2fe1b745 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -227,8 +227,8 @@ "getting_started.heading": "Darba sākšana", "getting_started.invite": "Uzaicini cilvēkus", "getting_started.open_source_notice": "Mastodon ir atvērtā koda programmatūra. Tu vari dot savu ieguldījumu vai arī ziņot par problēmām {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Konta iestatījumi", - "getting_started.terms": "Pakalpojuma noteikumi", "hashtag.column_header.tag_mode.all": "un {additional}", "hashtag.column_header.tag_mode.any": "vai {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nevarēja atrast neko šiem meklēšanas vienumiem", "search_results.statuses": "Ziņas", "search_results.statuses_fts_disabled": "Šajā Mastodon serverī nav iespējota ziņu meklēšana pēc to satura.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultāts} other {rezultāti}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Atvērt @{name} moderēšanas saskarni", "status.admin_status": "Atvērt šo ziņu moderācijas saskarnē", "status.block": "Bloķēt @{name}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 916a8e98a..829251daa 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -227,8 +227,8 @@ "getting_started.heading": "Започни", "getting_started.invite": "Покани луѓе", "getting_started.open_source_notice": "Мастодон е софтвер со отворен код. Можете да придонесувате или пријавувате проблеми во GitHub на {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Поставки на сметката", - "getting_started.terms": "Услови на користење", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 12196c123..d8bfee5d2 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -227,8 +227,8 @@ "getting_started.heading": "തുടക്കം കുറിക്കുക", "getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക", "getting_started.open_source_notice": "മാസ്റ്റഡോൺ ഒരു സ്വതന്ത്ര സോഫ്ട്‍വെയർ ആണ്. നിങ്ങൾക്ക് {github} GitHub ൽ സംഭാവന ചെയ്യുകയോ പ്രശ്നങ്ങൾ അറിയിക്കുകയോ ചെയ്യാം.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "അംഗത്വ ക്രമീകരണങ്ങൾ", - "getting_started.terms": "സേവന വ്യവസ്ഥകൾ", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", "hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}", "hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "ടൂട്ടുകൾ", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "@{name} -നെ തടയുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 6f120c6fb..4e44813b2 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 4dd6ddb40..8457b4dc7 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -227,8 +227,8 @@ "getting_started.heading": "Mari bermula", "getting_started.invite": "Undang orang", "getting_started.open_source_notice": "Mastodon itu perisian bersumber terbuka. Anda boleh menyumbang atau melaporkan masalah di GitHub menerusi {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Tetapan akaun", - "getting_started.terms": "Terma perkhidmatan", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Hantaran", "search_results.statuses_fts_disabled": "Menggelintar hantaran menggunakan kandungannya tidak didayakan di pelayan Mastodon ini.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, other {hasil}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Buka antara muka penyederhanaan untuk @{name}", "status.admin_status": "Buka hantaran ini dalam antara muka penyederhanaan", "status.block": "Sekat @{name}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index eab9adbc7..db8c6957a 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Aan de slag", "getting_started.invite": "Mensen uitnodigen", "getting_started.open_source_notice": "Mastodon is vrije software. Je kunt bijdragen of problemen melden op GitHub via {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Accountinstellingen", - "getting_started.terms": "Voorwaarden", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "zonder {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Deze zoektermen leveren geen resultaat op", "search_results.statuses": "Berichten", "search_results.statuses_fts_disabled": "Het zoeken in berichten is op deze Mastodon-server niet ingeschakeld.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Moderatie-omgeving van @{name} openen", "status.admin_status": "Dit bericht in de moderatie-omgeving openen", "status.block": "@{name} blokkeren", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 810f23be6..03db34b65 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -227,8 +227,8 @@ "getting_started.heading": "Kom i gang", "getting_started.invite": "Byd folk inn", "getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidraga eller rapportera problem med GitHub på {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinnstillingar", - "getting_started.terms": "Brukarvilkår", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Kunne ikkje finne noko for desse søkeorda", "search_results.statuses": "Tut", "search_results.statuses_fts_disabled": "På denne Matsodon-tenaren kan du ikkje søkja på tut etter innhaldet deira.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {treff} other {treff}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Opne moderasjonsgrensesnitt for @{name}", "status.admin_status": "Opne denne statusen i moderasjonsgrensesnittet", "status.block": "Blokker @{name}", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 7d00b48a7..640a34f9e 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -227,8 +227,8 @@ "getting_started.heading": "Kom i gang", "getting_started.invite": "Inviter folk", "getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidra eller rapportere problemer på GitHub på {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinnstillinger", - "getting_started.terms": "Bruksvilkår", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uten {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuter", "search_results.statuses_fts_disabled": "Å søke i tuter etter innhold er ikke skrudd på i denne Mastodon-tjeneren.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Åpne moderatorgrensesnittet for @{name}", "status.admin_status": "Åpne denne statusen i moderatorgrensesnittet", "status.block": "Blokkér @{name}", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 9ae4445fd..28e8228b1 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -227,8 +227,8 @@ "getting_started.heading": "Per començar", "getting_started.invite": "Convidar de mond", "getting_started.open_source_notice": "Mastodon es un logicial liure. Podètz contribuir e mandar vòstres comentaris e rapòrt de bug via {github} sus GitHub.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguretat", - "getting_started.terms": "Condicions d’utilizacion", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sens {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuts", "search_results.statuses_fts_disabled": "La recèrca de tuts per lor contengut es pas activada sus aqueste servidor Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Dobrir l’interfàcia de moderacion per @{name}", "status.admin_status": "Dobrir aqueste estatut dins l’interfàcia de moderacion", "status.block": "Blocar @{name}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index f8e7597e5..7e3bba2df 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 71ae209f3..3748053f4 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Rozpocznij", "getting_started.invite": "Zaproś znajomych", "getting_started.open_source_notice": "Mastodon jest oprogramowaniem o otwartym źródle. Możesz pomóc w rozwoju lub zgłaszać błędy na GitHubie tutaj: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Bezpieczeństwo", - "getting_started.terms": "Zasady użytkowania", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "lub {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nie znaleziono innych wyników dla tego wyszukania", "search_results.statuses": "Wpisy", "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} other {wyników}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Otwórz interfejs moderacyjny dla @{name}", "status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym", "status.block": "Zablokuj @{name}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 5e0f9058f..f6442086e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeiros passos", "getting_started.invite": "Convidar pessoas", "getting_started.open_source_notice": "Mastodon é um software de código aberto. Você pode contribuir ou reportar problemas na página do projeto no GitHub em {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Configurações da conta", - "getting_started.terms": "Termos de serviço", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Não foi possível encontrar nada para estes termos de busca", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interface de moderação para @{name}", "status.admin_status": "Abrir este toot na interface de moderação", "status.block": "Bloquear @{name}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 7c9936c6d..56a08516c 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeiros passos", "getting_started.invite": "Convidar pessoas", "getting_started.open_source_notice": "Mastodon é um software de código aberto. Podes contribuir ou reportar problemas no GitHub do projeto: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Segurança", - "getting_started.terms": "Termos de serviço", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Não foi possível encontrar resultados para as expressões pesquisadas", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível nesta instância Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir a interface de moderação para @{name}", "status.admin_status": "Abrir esta publicação na interface de moderação", "status.block": "Bloquear @{name}", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 9ef230567..a301aeade 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primii pași", "getting_started.invite": "Invită persoane", "getting_started.open_source_notice": "Mastodon este un software cu sursă deschisă (open source). Poți contribui la dezvoltarea lui sau raporta probleme pe GitHub la {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Setări cont", - "getting_started.terms": "Termeni și condiții", "hashtag.column_header.tag_mode.all": "și {additional}", "hashtag.column_header.tag_mode.any": "sau {additional}", "hashtag.column_header.tag_mode.none": "fără {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postări", "search_results.statuses_fts_disabled": "Căutarea de postări după conținutul lor nu este activată pe acest server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultate}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Deschide interfața de moderare pentru @{name}", "status.admin_status": "Deschide această stare în interfața de moderare", "status.block": "Blochează pe @{name}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 47a0a7953..e8e7c4d3e 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -227,8 +227,8 @@ "getting_started.heading": "Начать", "getting_started.invite": "Пригласить людей", "getting_started.open_source_notice": "Mastodon — сервис с открытым исходным кодом. Вы можете внести вклад или сообщить о проблемах на GitHub: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Настройки учётной записи", - "getting_started.terms": "Условия использования", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ничего не найдено по этому запросу", "search_results.statuses": "Посты", "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным сервером Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Открыть интерфейс модератора для @{name}", "status.admin_status": "Открыть этот пост в интерфейсе модератора", "status.block": "Заблокировать @{name}", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 11d2b9e2f..062aa51e8 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 1623bacdc..30e66f396 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -227,8 +227,8 @@ "getting_started.heading": "Comente cumintzare", "getting_started.invite": "Invita gente", "getting_started.open_source_notice": "Mastodon est de còdighe abertu. Bi podes contribuire o sinnalare faddinas in {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Cunfiguratziones de su contu", - "getting_started.terms": "Cunditziones de su servìtziu", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sena {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Publicatziones", "search_results.statuses_fts_disabled": "Sa chirca de publicatziones pro su cuntenutu issoro no est abilitada in custu serbidore de Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resurtadu} other {resurtados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Aberi s'interfache de moderatzione pro @{name}", "status.admin_status": "Aberi custa publicatzione in s'interfache de moderatzione", "status.block": "Bloca a @{name}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index a1205e3b4..28738ccb5 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -227,8 +227,8 @@ "getting_started.heading": "පටන් ගන්න", "getting_started.invite": "මිනිසුන්ට ආරාධනය", "getting_started.open_source_notice": "Mastodon යනු විවෘත කේත මෘදුකාංගයකි. ඔබට GitHub හි {github}ට දායක වීමට හෝ ගැටළු වාර්තා කිරීමට හැකිය.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ගිණුමේ සැකසුම්", - "getting_started.terms": "සේවාවේ නියම", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", @@ -472,7 +472,11 @@ "search_results.nothing_found": "මෙම සෙවුම් පද සඳහා කිසිවක් සොයාගත නොහැකි විය", "search_results.statuses": "ලිපි", "search_results.statuses_fts_disabled": "මෙම Mastodon සේවාදායකයේ ඒවායේ අන්තර්ගතය අනුව මෙවලම් සෙවීම සබල නොවේ.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {ප්රතිඵලය} other {ප්රතිපල}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name}සඳහා මධ්‍යස්ථ අතුරුමුහුණත විවෘත කරන්න", "status.admin_status": "මධ්‍යස්ථ අතුරුමුහුණතෙහි මෙම තත්ත්වය විවෘත කරන්න", "status.block": "@{name} අවහිර", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 620b8dfc1..f44495a82 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -227,8 +227,8 @@ "getting_started.heading": "Začni tu", "getting_started.invite": "Pozvi ľudí", "getting_started.open_source_notice": "Mastodon je softvér s otvoreným kódom. Nahlásiť chyby, alebo prispievať môžeš na GitHube v {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Zabezpečenie", - "getting_started.terms": "Podmienky prevozu", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "alebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Príspevky", "search_results.statuses_fts_disabled": "Vyhľadávanie v obsahu príspevkov nieje na tomto Mastodon serveri povolené.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {výsledok} many {výsledkov} other {výsledky}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Otvor moderovacie rozhranie užívateľa @{name}", "status.admin_status": "Otvor tento príspevok v moderovacom rozhraní", "status.block": "Blokuj @{name}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index d2e2fdbab..a33fb8b89 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Kako začeti", "getting_started.invite": "Povabite osebe", "getting_started.open_source_notice": "Mastodon je odprtokodna programska oprema. Na GitHubu na {github} lahko prispevate ali poročate o napakah.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Varnost", - "getting_started.terms": "Pogoji uporabe", "hashtag.column_header.tag_mode.all": "in {additional}", "hashtag.column_header.tag_mode.any": "ali {additional}", "hashtag.column_header.tag_mode.none": "brez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Za ta iskalni niz ni zadetkov", "search_results.statuses": "Objave", "search_results.statuses_fts_disabled": "Iskanje objav po njihovi vsebini ni omogočeno na tem strežniku Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultatov}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Odpri vmesnik za moderiranje za @{name}", "status.admin_status": "Odpri status v vmesniku za moderiranje", "status.block": "Blokiraj @{name}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 5e971ce6e..344d76344 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -227,8 +227,8 @@ "getting_started.heading": "Si t’ia fillohet", "getting_started.invite": "Ftoni njerëz", "getting_started.open_source_notice": "Mastodon-i është software me burim të hapur. Mund të jepni ndihmesë ose të njoftoni probleme në GitHub, te {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Rregullime llogarie", - "getting_started.terms": "Kushte shërbimi", "hashtag.column_header.tag_mode.all": "dhe {additional}", "hashtag.column_header.tag_mode.any": "ose {additional}", "hashtag.column_header.tag_mode.none": "pa {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "S’u gjet gjë për këto terma kërkimi", "search_results.statuses": "Mesazhe", "search_results.statuses_fts_disabled": "Kërkimi i mesazheve sipas lëndës së tyre s’është i aktivizuar në këtë shërbyes Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {përfundim} other {përfundime}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Hap ndërfaqe moderimi për @{name}", "status.admin_status": "Hape këtë mesazh te ndërfaqja e moderimit", "status.block": "Blloko @{name}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 1bb6218a3..d5aa11511 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -227,8 +227,8 @@ "getting_started.heading": "Da počnete", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodont je softver otvorenog koda. Možete mu doprineti ili prijaviti probleme preko GitHub-a na {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} few {rezultata} other {rezultata}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 5fa8b1b89..19c79920d 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Да почнете", "getting_started.invite": "Позовите људе", "getting_started.open_source_notice": "Мастoдон је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко ГитХаба на {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Безбедност", - "getting_started.terms": "Услови коришћења", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Трубе", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Отвори модераторски интерфејс за @{name}", "status.admin_status": "Отвори овај статус у модераторском интерфејсу", "status.block": "Блокирај @{name}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 78ff55ceb..ea98863e7 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -227,8 +227,8 @@ "getting_started.heading": "Kom igång", "getting_started.invite": "Skicka inbjudningar", "getting_started.open_source_notice": "Mastodon är programvara med öppen källkod. Du kan bidra eller rapportera problem via GitHub på {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinställningar", - "getting_started.terms": "Användarvillkor", "hashtag.column_header.tag_mode.all": "och {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", "search_results.statuses": "Inlägg", "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", "status.admin_status": "Öppna denna status i modereringsgränssnittet", "status.block": "Blockera @{name}", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index f8e7597e5..7e3bba2df 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 54ada2e22..4d12bb1cc 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -227,8 +227,8 @@ "getting_started.heading": "முதன்மைப் பக்கம்", "getting_started.invite": "நண்பர்களை அழைக்க", "getting_started.open_source_notice": "மாஸ்டடான் ஒரு open source மென்பொருள் ஆகும். {github} -இன் மூலம் உங்களால் இதில் பங்களிக்கவோ, சிக்கல்களைத் தெரியப்படுத்தவோ முடியும்.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "கணக்கு அமைப்புகள்", - "getting_started.terms": "சேவை விதிமுறைகள்", "hashtag.column_header.tag_mode.all": "மற்றும் {additional}", "hashtag.column_header.tag_mode.any": "அல்லது {additional}", "hashtag.column_header.tag_mode.none": "{additional} தவிர்த்து", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "டூட்டுகள்", "search_results.statuses_fts_disabled": "டூட்டுகளின் வார்த்தைகளைக்கொண்டு தேடுவது இந்த மச்டோடன் வழங்கியில் இயல்விக்கப்படவில்லை.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} மற்ற {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "மிதமான இடைமுகத்தை திறக்க @{name}", "status.admin_status": "மிதமான இடைமுகத்தில் இந்த நிலையை திறக்கவும்", "status.block": "@{name} -ஐத் தடு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 0ffc9e198..79ed59434 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 2ee3052c7..e327c3859 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -227,8 +227,8 @@ "getting_started.heading": "మొదలుపెడదాం", "getting_started.invite": "వ్యక్తులను ఆహ్వానించండి", "getting_started.open_source_notice": "మాస్టొడొన్ ఓపెన్ సోర్స్ సాఫ్ట్వేర్. మీరు {github} వద్ద GitHub పై సమస్యలను నివేదించవచ్చు లేదా తోడ్పడచ్చు.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "భద్రత", - "getting_started.terms": "సేవా నిబంధనలు", "hashtag.column_header.tag_mode.all": "మరియు {additional}", "hashtag.column_header.tag_mode.any": "లేదా {additional}", "hashtag.column_header.tag_mode.none": "{additional} లేకుండా", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "టూట్లు", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name} కొరకు సమన్వయ వినిమయసీమను తెరువు", "status.admin_status": "సమన్వయ వినిమయసీమలో ఈ స్టేటస్ ను తెరవండి", "status.block": "@{name} ను బ్లాక్ చేయి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 5ee8a8e3a..287448bf4 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -227,8 +227,8 @@ "getting_started.heading": "เริ่มต้นใช้งาน", "getting_started.invite": "เชิญผู้คน", "getting_started.open_source_notice": "Mastodon เป็นซอฟต์แวร์โอเพนซอร์ส คุณสามารถมีส่วนร่วมหรือรายงานปัญหาได้ใน GitHub ที่ {github}", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "การตั้งค่าบัญชี", - "getting_started.terms": "เงื่อนไขการให้บริการ", "hashtag.column_header.tag_mode.all": "และ {additional}", "hashtag.column_header.tag_mode.any": "หรือ {additional}", "hashtag.column_header.tag_mode.none": "โดยไม่มี {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "ไม่พบสิ่งใดสำหรับคำค้นหาเหล่านี้", "search_results.statuses": "โพสต์", "search_results.statuses_fts_disabled": "ไม่มีการเปิดใช้งานการค้นหาโพสต์โดยเนื้อหาของโพสต์ในเซิร์ฟเวอร์ Mastodon นี้", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "เปิดส่วนติดต่อการควบคุมสำหรับ @{name}", "status.admin_status": "เปิดโพสต์นี้ในส่วนติดต่อการควบคุม", "status.block": "ปิดกั้น @{name}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 4ddcef55a..b3b539f68 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Başlarken", "getting_started.invite": "İnsanları davet et", "getting_started.open_source_notice": "Mastodon açık kaynaklı bir yazılımdır. GitHub'taki {github} üzerinden katkıda bulunabilir veya sorunları bildirebilirsiniz.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Hesap ayarları", - "getting_started.terms": "Kullanım şartları", "hashtag.column_header.tag_mode.all": "ve {additional}", "hashtag.column_header.tag_mode.any": "ya da {additional}", "hashtag.column_header.tag_mode.none": "{additional} olmadan", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Bu arama seçenekleriyle bir sonuç bulunamadı", "search_results.statuses": "Gönderiler", "search_results.statuses_fts_disabled": "Bu Mastodon sunucusunda gönderi içeriğine göre arama etkin değil.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuç}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name} için denetim arayüzünü açın", "status.admin_status": "Denetim arayüzünde bu gönderiyi açın", "status.block": "@{name} adlı kişiyi engelle", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 7bfa44882..0bc6dee62 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "@{name} блоклау", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index f8e7597e5..7e3bba2df 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index a81cefe32..1001222c2 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -227,8 +227,8 @@ "getting_started.heading": "Розпочати", "getting_started.invite": "Запросити людей", "getting_started.open_source_notice": "Mastodon — програма з відкритим сирцевим кодом. Ви можете допомогти проєкту, або повідомити про проблеми на GitHub: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Налаштування облікового запису", - "getting_started.terms": "Умови використання", "hashtag.column_header.tag_mode.all": "та {additional}", "hashtag.column_header.tag_mode.any": "або {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Нічого не вдалося знайти за цими пошуковими термінами", "search_results.statuses": "Дмухів", "search_results.statuses_fts_disabled": "Пошук дописів за вмістом недоступний на даному сервері Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Відкрити інтерфейс модерації для @{name}", "status.admin_status": "Відкрити цей статус в інтерфейсі модерації", "status.block": "Заблокувати @{name}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 2460e36a0..b79391be0 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -227,8 +227,8 @@ "getting_started.heading": "آغاز کریں", "getting_started.invite": "دوستوں کو دعوت دیں", "getting_started.open_source_notice": "ماسٹوڈون آزاد منبع سوفٹویر ہے. آپ {github} گِٹ ہب پر مسائل میں معاونت یا مشکلات کی اطلاع دے سکتے ہیں.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ترتیباتِ اکاؤنٹ", - "getting_started.terms": "شرائط خدمات", "hashtag.column_header.tag_mode.all": "اور {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بغیر {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index a69a1830f..c349fcf8c 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -227,8 +227,8 @@ "getting_started.heading": "Quản lý", "getting_started.invite": "Mời bạn bè", "getting_started.open_source_notice": "Mastodon là phần mềm mã nguồn mở. Bạn có thể đóng góp hoặc báo lỗi trên GitHub tại {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Bảo mật", - "getting_started.terms": "Điều khoản dịch vụ", "hashtag.column_header.tag_mode.all": "và {additional}", "hashtag.column_header.tag_mode.any": "hoặc {additional}", "hashtag.column_header.tag_mode.none": "mà không {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Không tìm thấy kết quả trùng khớp", "search_results.statuses": "Tút", "search_results.statuses_fts_disabled": "Máy chủ của bạn không bật tính năng tìm kiếm tút.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {kết quả} other {kết quả}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Mở giao diện quản trị @{name}", "status.admin_status": "Mở tút này trong giao diện quản trị", "status.block": "Chặn @{name}", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index b83ef1786..9d551e30a 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "ⴷ {additional}", "hashtag.column_header.tag_mode.any": "ⵏⵖ {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "ⴳⴷⵍ @{name}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 40d9168a9..dfddf0a66 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -227,8 +227,8 @@ "getting_started.heading": "开始使用", "getting_started.invite": "邀请用户", "getting_started.open_source_notice": "Mastodon 是开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "账号设置", - "getting_started.terms": "使用条款", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "无法找到符合这些搜索词的任何内容", "search_results.statuses": "嘟文", "search_results.statuses_fts_disabled": "此 Mastodon 服务器未启用帖子内容搜索。", + "search_results.title": "Search for {q}", "search_results.total": "共 {count, number} 个结果", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "打开 @{name} 的管理界面", "status.admin_status": "打开此帖的管理界面", "status.block": "屏蔽 @{name}", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 47b21d523..65c366a01 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -227,8 +227,8 @@ "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", "getting_started.open_source_notice": "Mastodon(萬象)是一個開放源碼的軟件。你可以在官方 GitHub {github} 貢獻或者回報問題。", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "帳戶設定", - "getting_started.terms": "服務條款", "hashtag.column_header.tag_mode.all": "以及{additional}", "hashtag.column_header.tag_mode.any": "或是{additional}", "hashtag.column_header.tag_mode.none": "而無需{additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "文章", "search_results.statuses_fts_disabled": "此 Mastodon 伺服器並未啟用「搜尋文章內章」功能。", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} 項結果", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "開啟 @{name} 的管理介面", "status.admin_status": "在管理介面開啟這篇文章", "status.block": "封鎖 @{name}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 8189e896c..42ee65281 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -227,8 +227,8 @@ "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", "getting_started.open_source_notice": "Mastodon 是開源軟體。您可以在 GitHub {github} 上貢獻或是回報問題。", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "帳號安全性設定", - "getting_started.terms": "服務條款", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而無需 {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "無法找到符合搜尋條件之結果", "search_results.statuses": "嘟文", "search_results.statuses_fts_disabled": "「依內容搜尋嘟文」未在此 Mastodon 伺服器啟用。", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} 項結果", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "開啟 @{name} 的管理介面", "status.admin_status": "在管理介面開啟此嘟文", "status.block": "封鎖 @{name}", diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index 50c4fc8c3..5505254e5 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -40,3 +40,12 @@ cs: unreachable: pravděpodobně neexistuje role_id: elevated: nemůže být vyšší než vaše aktuální role + user_role: + attributes: + permissions_as_keys: + dangerous: obsahuje oprávnění, která nejsou bezpečná pro základní roli + elevated: nemůže obsahovat oprávnění, která vaše aktuální role nemá + own_role: nelze změnit s vaší aktuální rolí + position: + elevated: nemůže být vyšší než vaše aktuální role + own_role: nelze změnit s vaší aktuální rolí diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 432c10ce0..691cc8689 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -28,7 +28,6 @@ ar: learn_more: تعلم المزيد logged_in_as_html: أنت متصل حالياً كـ %{username}. logout_before_registering: أنت متصل سلفًا. - privacy_policy: سياسة الخصوصية rules: قوانين الخادم rules_html: 'فيما يلي ملخص للقوانين التي تحتاج إلى اتباعها إذا كنت تريد أن يكون لديك حساب على هذا الخادم من ماستدون:' see_whats_happening: اطّلع على ما يجري @@ -42,7 +41,6 @@ ar: two: منشورات zero: منشورات status_count_before: نشروا - terms: شروط الخدمة unavailable_content: محتوى غير متوفر unavailable_content_description: domain: الخادم @@ -675,9 +673,6 @@ ar: site_short_description: desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الافتراضي لمثيل الخادوم. title: مقدمة وصفية قصيرة عن مثيل الخادوم - site_terms: - desc_html: يمكنك كتابة سياسة الخصوصية الخاصة بك ، شروط الخدمة أو غيرها من القوانين. يمكنك استخدام علامات HTML - title: شروط الخدمة المخصصة site_title: اسم مثيل الخادم thumbnail: desc_html: يستخدم للعروض السابقة عبر Open Graph و API. 1200x630px موصى به @@ -1436,8 +1431,6 @@ ar: sensitive_content: محتوى حساس tags: does_not_match_previous_name: لا يطابق الإسم السابق - terms: - title: شروط الخدمة وسياسة الخصوصية على %{instance} themes: contrast: ماستدون (تباين عالٍ) default: ماستدون (داكن) diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 2d175592b..2ab79c6fc 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -17,14 +17,12 @@ ast: get_apps: En preseos móviles hosted_on: Mastodon ta agospiáu en %{domain} learn_more: Saber más - privacy_policy: Política de privacidá server_stats: 'Estadístiques del sirvidor:' source_code: Códigu fonte status_count_after: one: artículu other: artículos status_count_before: Que crearon - terms: Términos del serviciu unavailable_content_description: domain: Sirvidor reason: Motivu diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 43b8a13ba..23c11e543 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -21,7 +21,6 @@ bg: get_apps: Опитайте мобилно приложение hosted_on: Mastodon е хостван на %{domain} learn_more: Още информация - privacy_policy: Политика за поверителност see_whats_happening: Вижте какво се случва server_stats: 'Сървърна статистика:' source_code: Програмен код @@ -29,7 +28,6 @@ bg: one: състояние other: състояния status_count_before: Написали - terms: Условия за ползване unavailable_content: Модерирани сървъри unavailable_content_description: domain: Сървър diff --git a/config/locales/bn.yml b/config/locales/bn.yml index bbeab8655..a30d933e5 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -23,7 +23,6 @@ bn: hosted_on: এই মাস্টাডনটি আছে %{domain} এ instance_actor_flash: "এই অ্যাকাউন্টটি ভার্চুয়াল এক্টর যা নিজে কোনও সার্ভারের প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং কোনও পৃথক ব্যবহারকারী নয়। এটি ফেডারেশনের উদ্দেশ্যে ব্যবহৃত হয় এবং আপনি যদি পুরো ইনস্ট্যান্স ব্লক করতে না চান তবে অবরুদ্ধ করা উচিত নয়, সেক্ষেত্রে আপনার ডোমেন ব্লক ব্যবহার করা উচিত। \n" learn_more: বিস্তারিত জানুন - privacy_policy: গোপনীয়তা নীতি see_whats_happening: কী কী হচ্ছে দেখুন server_stats: 'সার্ভারের অবস্থা:' source_code: আসল তৈরীপত্র @@ -31,7 +30,6 @@ bn: one: অবস্থা other: স্থিতিগুলি status_count_before: কে লিখেছে - terms: ব্যবহারের শর্তাবলী unavailable_content: অনুপলব্ধ সামগ্রী unavailable_content_description: domain: সার্ভার diff --git a/config/locales/br.yml b/config/locales/br.yml index 4d34f3388..0e9b9d1ee 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -9,7 +9,6 @@ br: contact: Darempred discover_users: Dizoleiñ implijer·ien·ezed learn_more: Gouzout hiroc'h - privacy_policy: Reolennoù prevezded rules: Reolennoù ar servijer server_stats: 'Stadegoù ar servijer:' source_code: Boneg tarzh @@ -19,7 +18,6 @@ br: one: toud other: toud two: toud - terms: Divizoù gwerzhañ hollek unavailable_content_description: domain: Dafariad user_count_after: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 43d77f636..3f381d76c 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -28,7 +28,7 @@ ca: learn_more: Aprèn més logged_in_as_html: Actualment has iniciat sessió com a %{username}. logout_before_registering: Ja has iniciat sessió. - privacy_policy: Política de privadesa + privacy_policy: Política de Privacitat rules: Normes del servidor rules_html: 'A continuació, es mostra un resum de les normes que has de seguir si vols tenir un compte en aquest servidor de Mastodon:' see_whats_happening: Mira què està passant @@ -39,7 +39,6 @@ ca: other: publicacions status_count_before: Qui ha publicat tagline: Xarxa social descentralitzada - terms: Condicions de servei unavailable_content: Servidors moderats unavailable_content_description: domain: Servidor @@ -797,8 +796,8 @@ ca: desc_html: Es mostra a la barra lateral i a metaetiquetes. Descriu en un únic paràgraf què és Mastodon i què fa que aquest servidor sigui especial. title: Descripció curta del servidor site_terms: - desc_html: Pots escriure la teva pròpia política de privadesa, els termes del servei o d'altres normes legals. Pots utilitzar etiquetes HTML - title: Termes del servei personalitzats + desc_html: Pots escriure la teva pròpia política de privacitat. Pots fer servir etiquetes HTML + title: Política de privacitat personalitzada site_title: Nom del servidor thumbnail: desc_html: S'utilitza per obtenir visualitzacions prèvies a través d'OpenGraph i API. Es recomana 1200x630px @@ -1710,7 +1709,7 @@ ca:

Atribució

This text is free to be adapted and remixed under the terms of the CC-BY (Attribution 4.0 International) license. - title: "%{instance} Condicions del servei i política de privadesa" + title: Política de Privacitat de %{instance} themes: contrast: Mastodon (alt contrast) default: Mastodon (fosc) diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 6c91b571a..fe2dffcc1 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -27,7 +27,6 @@ ckb: learn_more: زیاتر فێربه logged_in_as_html: لە ئێستادا تۆ وەک %{username} چوویتە ژوورەوە. logout_before_registering: تۆ پێشتر چوویتە ژوورەوە. - privacy_policy: ڕامیاری تایبەتێتی rules: یاساکانی سێرڤەر rules_html: 'لە خوارەوە کورتەیەک لەو یاسایانە دەخەینەڕوو کە پێویستە پەیڕەوی لێبکەیت ئەگەر بتەوێت ئەکاونتێکت هەبێت لەسەر ئەم سێرڤەرەی ماستۆدۆن:' see_whats_happening: بزانە چی ڕوودەدات @@ -37,7 +36,6 @@ ckb: one: دۆخ other: پۆست status_count_before: لە لایەن یەکەوە - terms: مەرجەکانی خزمەتگوزاری unavailable_content: ڕاژەی چاودێریکراو unavailable_content_description: domain: ڕاژەکار @@ -631,9 +629,6 @@ ckb: site_short_description: desc_html: نیشان لە شریتی لاتەنیشت و مێتا تاگەکان. لە پەرەگرافێک دا وەسفی بکە کە ماستۆدۆن چیە و چی وا لە ڕاژە کە دەکات تایبەت بێت. title: دەربارەی ئەم ڕاژە - site_terms: - desc_html: دەتوانیت سیاسەتی تایبەتیێتی خۆت بنووسیت، مەرجەکانی خزمەتگوزاری یان یاسایی تر. دەتوانیت تاگەکانی HTML بەکاربێنیت - title: مەرجەکانی خزمەتگوزاری ئاسایی site_title: ناوی ڕاژە thumbnail: desc_html: بۆ پێشبینین بەکارهاتووە لە ڕێگەی OpenGraph وە API. ڕووناکی بینین ١٢٠٠x٦٣٠پیکسێڵ پێشنیارکراوە @@ -1177,8 +1172,6 @@ ckb: sensitive_content: ناوەڕۆکی هەستیار tags: does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە - terms: - title: "%{instance} مەرجەکانی خزمەتگوزاری و سیاسەتی تایبەتیێتی" themes: contrast: ماستۆدۆن (کۆنتراستی بەرز) default: ماستۆدۆن (ڕەش) diff --git a/config/locales/co.yml b/config/locales/co.yml index 9844cb8c1..bb0339440 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -25,7 +25,6 @@ co: Stu contu ghjè un'attore virtuale chì ghjove à riprisentà u servore sanu è micca un veru utilizatore. Hè utilizatu da a federazione è ùn deve micca esse bluccatu eccettu s'e voi vulete bluccà tuttu u servore, in quellu casu duvereste utilizà un blucchime di duminiu. learn_more: Amparà di più - privacy_policy: Pulitica di vita privata rules: Regule di u servore rules_html: 'Eccu un riassuntu di e regule da siguità s''e voi vulete creà un contu nant''à quessu servore di Mastodon:' see_whats_happening: Vede cio chì si passa @@ -35,7 +34,6 @@ co: one: statutu other: statuti status_count_before: Chì anu pubblicatu - terms: Cundizione di u serviziu unavailable_content: Cuntinutu micca dispunibule unavailable_content_description: domain: Servore @@ -589,9 +587,6 @@ co: site_short_description: desc_html: Mustratu indè a barra laterala è i tag meta. Spiegate quale hè Mastodon è ciò chì rende u vostru servore speciale in un paragrafu. S'ella hè lasciata viota, a discrizzione di u servore sarà utilizata. title: Descrizzione corta di u servore - site_terms: - desc_html: Quì pudete scrive e vostre regule di cunfidenzialità, cundizione d’usu o altre menzione legale. Pudete fà usu di marchi HTML - title: Termini persunalizati site_title: Nome di u servore thumbnail: desc_html: Utilizatu per viste cù OpenGraph è l’API. Ricumandemu 1200x630px @@ -1211,8 +1206,6 @@ co: sensitive_content: Cuntenutu sensibile tags: does_not_match_previous_name: ùn currisponde micca à l'anzianu nome - terms: - title: Termini d’usu è di cunfidenzialità per %{instance} themes: contrast: Mastodon (Cuntrastu altu) default: Mastodon (Scuru) diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 4478d2420..fbde9e051 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -28,7 +28,7 @@ cs: learn_more: Zjistit více logged_in_as_html: Aktuálně jste přihlášeni jako %{username}. logout_before_registering: Již jste přihlášeni. - privacy_policy: Zásady ochrany osobních údajů + privacy_policy: Ochrana osobních údajů rules: Pravidla serveru rules_html: 'Níže je shrnutí pravidel, která musíte dodržovat, pokud chcete mít účet na tomto Mastodon serveru:' see_whats_happening: Podívejte se, co se děje @@ -41,7 +41,6 @@ cs: other: příspěvků status_count_before: Kteří napsali tagline: Decentralizovaná sociální síť - terms: Podmínky používání unavailable_content: Moderované servery unavailable_content_description: domain: Server @@ -696,8 +695,10 @@ cs: moderation: Moderování special: Speciální delete: Smazat + description_html: Pomocí uživatelských rolímůžete upravit, ke kterým funkcím a oblastem mají přístup uživatelé Mastodon. edit: Upravit roli „%{name}“ everyone: Výchozí oprávnění + everyone_full_description_html: Toto je základní role ovlivňující všechny uživatele, a to i bez přiřazené role. Všechny ostatní role od ní dědí oprávnění. permissions_count: few: "%{count} oprávnění" many: "%{count} oprávnění" @@ -705,27 +706,41 @@ cs: other: "%{count} oprávnění" privileges: administrator: Správce + administrator_description: Uživatelé s tímto oprávněním obejdou všechna oprávnění delete_user_data: Mazat uživatelská data delete_user_data_description: Umožňuje uživatelům bezodkladně mazat data jiných uživatelů invite_users: Zvát uživatele invite_users_description: Umožňuje uživatelům zvát na server nové lidi manage_announcements: Spravovat oznámení + manage_announcements_description: Umožňuje uživatelům spravovat oznámení na serveru manage_appeals: Spravovat odvolání manage_appeals_description: Umožňuje uživatelům posuzovat odvolání proti moderátorským zásahům manage_blocks: Spravovat blokace + manage_blocks_description: Umožňuje uživatelům blokovat poskytovatele e-mailů a IP adresy manage_custom_emojis: Spravovat vlastní emoji manage_custom_emojis_description: Umožňuje uživatelům spravovat vlastní emoji na serveru + manage_federation: Spravovat federaci + manage_federation_description: Umožňuje uživatelům blokovat nebo povolit federaci s jinými doménami a ovládat doručování manage_invites: Spravovat pozvánky + manage_invites_description: Umožňuje uživatelům procházet a deaktivovat pozvánky manage_reports: Spravovat hlášení + manage_reports_description: Umožňuje uživatelům kontrolovat přehledy a provádět moderovací akce proti nim manage_roles: Spravovat role + manage_roles_description: Umožňuje uživatelům spravovat a přiřazovat role pod nimi manage_rules: Spravovat pravidla + manage_rules_description: Umožňuje uživatelům změnit pravidla serveru manage_settings: Spravovat nastavení + manage_settings_description: Umožňuje uživatelům změnit nastavení webu manage_taxonomies: Správa taxonomií + manage_taxonomies_description: Umožňuje uživatelům zkontrolovat populární obsah a aktualizovat nastavení hashtag manage_user_access: Spravovat uživatelské přístupy manage_user_access_description: Umožňuje uživatelům rušit jiným uživatelům dvoufázové ověřování, měnit jejich e-mailovou adresu a obnovovat jim hesla manage_users: Spravovat uživatele + manage_users_description: Umožňuje uživatelům zobrazit podrobnosti ostatních uživatelů a provádět moderování proti nim manage_webhooks: Spravovat webhooky + manage_webhooks_description: Umožňuje uživatelům nastavit webhooky pro administrativní události view_audit_log: Zobrazovat protokol auditu + view_audit_log_description: Umožňuje uživatelům vidět historii administrativních akcí na serveru view_dashboard: Zobrazit ovládací panel view_dashboard_description: Umožňuje uživatelům přístup k ovládacímu panelu a různým metrikám view_devops: Devops @@ -805,8 +820,8 @@ cs: desc_html: Zobrazeno v postranním panelu a meta značkách. V jednom odstavci popište, co je Mastodon a čím se tento server odlišuje od ostatních. title: Krátký popis serveru site_terms: - desc_html: Můžete si napsat vlastní zásady ochrany osobních údajů, podmínky používání či jiné právní dokumenty. Můžete použít HTML značky - title: Vlastní podmínky používání + desc_html: Můžete napsat své vlastní zásady ochrany osobních údajů. HTML tagy můžete použít + title: Vlastní zásady ochrany osobních údajů site_title: Název serveru thumbnail: desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučujeme rozlišení 1200x630px @@ -1211,6 +1226,7 @@ cs: add_keyword: Přidat klíčové slovo keywords: Klíčová slova statuses: Individuální příspěvky + statuses_hint_html: Tento filtr platí pro výběr jednotlivých příspěvků bez ohledu na to, zda odpovídají klíčovým slovům níže. Zkontrolujte nebo odeberte příspěvky z filtru. title: Upravit filtr errors: deprecated_api_multiple_keywords: Tyto parametry nelze změnit z této aplikace, protože se vztahují na více než jedno klíčové slovo filtru. Použijte novější aplikaci nebo webové rozhraní. @@ -1226,6 +1242,11 @@ cs: many: "%{count} klíčových slov" one: "%{count} klíčové slovo" other: "%{count} klíčových slov" + statuses: + few: "%{count} příspěvků" + many: "%{count} příspěvků" + one: "%{count} příspěvek" + other: "%{count} příspěvků" title: Filtry new: save: Uložit nový filtr @@ -1235,6 +1256,7 @@ cs: batch: remove: Odstranit z filtru index: + hint: Tento filtr se vztahuje na výběr jednotlivých příspěvků bez ohledu na jiná kritéria. Do tohoto filtru můžete přidat více příspěvků z webového rozhraní. title: Filtrované příspěvky footer: developers: Vývojáři @@ -1736,7 +1758,7 @@ cs:

Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 26. května 2022.

Původně adaptováno ze zásad ochrany osobních údajů projektu Discourse.

- title: Podmínky používání a zásady ochrany osobních údajů na serveru %{instance} + title: Zásady ochrany osobních údajů %{instance} themes: contrast: Mastodon (vysoký kontrast) default: Mastodon (tmavý) diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 7b6a0ef70..86a134a26 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -28,7 +28,6 @@ cy: learn_more: Dysgu mwy logged_in_as_html: Rydych chi wedi mewngofnodi fel %{username}. logout_before_registering: Rydych chi eisoes wedi mewngofnodi. - privacy_policy: Polisi preifatrwydd rules: Rheolau gweinydd rules_html: 'Isod mae crynodeb o''r rheolau y mae angen i chi eu dilyn os ydych chi am gael cyfrif ar y gweinydd hwn o Mastodon:' see_whats_happening: Gweld beth sy'n digwydd @@ -42,7 +41,6 @@ cy: two: statwsau zero: statwsau status_count_before: Ysgrifennwyd gan - terms: Telerau gwasanaeth unavailable_content: Cynnwys nad yw ar gael unavailable_content_description: domain: Gweinydd @@ -498,9 +496,6 @@ cy: 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 @@ -1047,8 +1042,6 @@ cy: too_late: Mae'n rhy hwyr i apelio yn erbyn y rhybudd hwn tags: does_not_match_previous_name: ddim yn cyfateb i'r enw blaenorol - terms: - title: "%{instance} Termau Gwasanaeth a Polisi Preifatrwydd" themes: contrast: Mastodon (Cyferbyniad uchel) default: Mastodon (Tywyll) diff --git a/config/locales/da.yml b/config/locales/da.yml index 9b6250ad3..3379b82c3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -39,7 +39,6 @@ da: other: indlæg status_count_before: Som har postet tagline: Decentraliseret socialt netværk - terms: Tjenestevilkår unavailable_content: Modererede servere unavailable_content_description: domain: Server @@ -796,8 +795,8 @@ da: desc_html: Vises på sidebjælke og metatags. Beskriv i et enkelt afsnit, hvad Mastodon er, og hvad der gør denne server speciel. title: Kort serverbeskrivelse site_terms: - desc_html: Der kan angives egen fortrolighedspolitik, tjenestevilkår el.lign. HTML-tags kan bruges - title: Tilpassede tjenestevilkår + desc_html: Man kan skrive sin egen fortrolighedspolitik. HTML-tags understøttes + title: Tilpasset fortrolighedspolitik site_title: Servernavn thumbnail: desc_html: Bruges til forhåndsvisninger via OpenGraph og API. 1200x630px anbefales @@ -1717,7 +1716,7 @@ da:

Dette dokument er CC-BY-SA. Det er senest opdateret 26. maj 2022.

Oprindeligt tilpasset fra Discourse-fortrolighedspolitik.

- title: Tjenestevilkår og Fortrolighedspolitik for %{instance} + title: "%{instance}-fortrolighedspolitik" themes: contrast: Mastodon (høj kontrast) default: Mastodont (mørkt) diff --git a/config/locales/de.yml b/config/locales/de.yml index d411886bf..b84604a68 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -28,7 +28,6 @@ de: learn_more: Mehr erfahren logged_in_as_html: Du bist derzeit als %{username} eingeloggt. logout_before_registering: Du bist bereits angemeldet. - privacy_policy: Datenschutzerklärung rules: Server-Regeln rules_html: 'Unten ist eine Zusammenfassung der Regeln, denen du folgen musst, wenn du ein Konto auf diesem Mastodon-Server haben möchtest:' see_whats_happening: Finde heraus, was gerade in der Welt los ist @@ -39,7 +38,6 @@ de: other: Beiträge status_count_before: mit tagline: Dezentrales soziales Netzwerk - terms: Nutzungsbedingungen unavailable_content: Nicht verfügbarer Inhalt unavailable_content_description: domain: Server @@ -796,9 +794,6 @@ de: site_short_description: desc_html: Wird in der Seitenleiste und in Meta-Tags angezeigt. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet. title: Kurze Beschreibung des Servers - site_terms: - desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags nutzen - title: Benutzerdefinierte Geschäftsbedingungen site_title: Name des Servers thumbnail: desc_html: Wird für die Vorschau via OpenGraph und API verwendet. 1200×630 px wird empfohlen @@ -1687,7 +1682,6 @@ de:

Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion.

Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 26. Mai 2022.

Ursprünglich übernommen von der Discourse-Datenschutzerklärung.

- title: "%{instance} Nutzungsbedingungen und Datenschutzerklärung" themes: contrast: Mastodon (Hoher Kontrast) default: Mastodon (Dunkel) diff --git a/config/locales/el.yml b/config/locales/el.yml index 8c7c29ac2..7b23b5f9f 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -26,7 +26,7 @@ el: Χρησιμεύει στη λειτουργία της ομοσπονδίας και δε θα πρέπει να αποκλειστεί, εκτός κι αν είναι επιθυμητός ο αποκλεισμός ολόκληρου του κόμβου. Σε αυτή την περίπτωση θα πρέπει να χρησιμοποιηθεί η λειτουργία αποκλεισμού τομέα. learn_more: Μάθε περισσότερα logout_before_registering: Είστε ήδη συνδεδεμένοι. - privacy_policy: Πολιτική απορρήτου + privacy_policy: Πολιτική Απορρήτου rules: Κανόνες διακομιστή rules_html: 'Παρακάτω είναι μια σύνοψη των κανόνων που πρέπει να ακολουθήσετε αν θέλετε να έχετε ένα λογαριασμό σε αυτόν τον διακομιστή Mastodon:' see_whats_happening: Μάθε τι συμβαίνει @@ -37,7 +37,6 @@ el: other: δημοσιεύσεις status_count_before: Που έγραψαν tagline: Αποκεντρωμένο κοινωνικό δίκτυο - terms: Όροι χρήσης unavailable_content: Μη διαθέσιμο unavailable_content_description: domain: Διακομιστής @@ -570,8 +569,8 @@ el: desc_html: Εμφανίζεται στην πλαϊνή μπάρα και στα meta tags. Περιέγραψε τι είναι το Mastodon και τι κάνει αυτό τον διακομιστή ιδιαίτερο σε μια παράγραφο. Αν μείνει κενό, θα χρησιμοποιήσει την προκαθορισμένη περιγραφή του κόμβου. title: Σύντομη περιγραφή του κόμβου site_terms: - desc_html: Μπορείς να γράψεις τη δική σου πολιτική απορρήτου, όρους χρήσης ή άλλους νομικούς όρους. Μπορείς να χρησιμοποιήσεις HTML tags - title: Προσαρμοσμένοι όροι χρήσης της υπηρεσίας + desc_html: Μπορείτε να γράψετε τη δική σας πολιτική απορρήτου. Μπορείτε να χρησιμοποιήσετε ετικέτες HTML + title: Προσαρμοσμένη πολιτική απορρήτου site_title: Όνομα κόμβου thumbnail: desc_html: Χρησιμοποιείται για προεπισκοπήσεις μέσω του OpenGraph και του API. Συστήνεται 1200x630px @@ -1152,7 +1151,7 @@ el: tags: does_not_match_previous_name: δεν ταιριάζει με το προηγούμενο όνομα terms: - title: Όροι Χρήσης και Πολιτική Απορρήτου του κόμβου %{instance} + title: "%{instance} Πολιτική Απορρήτου" themes: contrast: Mastodon (Υψηλή αντίθεση) default: Mastodon (Σκοτεινό) diff --git a/config/locales/eo.yml b/config/locales/eo.yml index cca9b0531..c8a7534ac 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -28,7 +28,6 @@ eo: learn_more: Lerni pli logged_in_as_html: Vi nun salutis kiel %{username}. logout_before_registering: Vi jam salutis. - privacy_policy: Politiko de privateco rules: Reguloj de la servilo see_whats_happening: Vidi kio okazas server_stats: 'Statistikoj de la servilo:' @@ -38,7 +37,6 @@ eo: other: mesaĝoj status_count_before: Kie skribiĝis tagline: Malcentrigita socia retejo - terms: Kondiĉoj de la servo unavailable_content: Moderigitaj serviloj unavailable_content_description: domain: Servilo @@ -587,9 +585,6 @@ eo: site_short_description: desc_html: Afiŝita en la flankpanelo kaj metadatumaj etikedoj. Priskribu kio estas Mastodon, kaj kio specialas en ĉi tiu nodo, per unu alineo. Se malplena, la priskribo de la servilo estos uzata. title: Mallonga priskribo de la servilo - site_terms: - desc_html: Vi povas skribi vian propran privatecan politikon, viajn uzkondiĉojn aŭ aliajn leĝaĵojn. Vi povas uzi HTML-etikedojn - title: Propraj kondiĉoj de la servo site_title: Nomo de la servilo thumbnail: desc_html: Uzata por antaŭvidoj per OpenGraph kaj per API. 1200x630px rekomendita @@ -1212,8 +1207,6 @@ eo: sensitive_content: Tikla enhavo tags: does_not_match_previous_name: ne kongruas kun la antaŭa nomo - terms: - title: Uzkondiĉoj kaj privateca politiko de %{instance} themes: contrast: Mastodon (Forta kontrasto) default: Mastodon (Malluma) diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 21c2dde6c..469ca27d9 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -39,7 +39,6 @@ es-AR: other: mensajes status_count_before: Que enviaron tagline: Red social descentralizada - terms: Términos del servicio unavailable_content: Servidores moderados unavailable_content_description: domain: Servidor @@ -797,8 +796,8 @@ es-AR: desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe qué es Mastodon y qué hace especial a este servidor en un solo párrafo. title: Descripción corta del servidor site_terms: - desc_html: Podés escribir tus propias políticas de privacidad, términos del servicio u otras cuestiones legales. Podés usar etiquetas HTML - title: Términos del servicio personalizados + desc_html: Podés escribir tu propia política de privacidad. Podés usar etiquetas HTML + title: Política de privacidad personalizada site_title: Nombre del servidor thumbnail: desc_html: Usado para previsualizaciones vía OpenGraph y APIs. Se recomienda 1200x630 píxeles @@ -1719,7 +1718,7 @@ es-AR:

Este documento se publica bajo la licencia CC-BY-SA (Creative Commons - Atribución - CompartirIgual) y fue actualizado por última vez el 26 de mayo de 2022.

Originalmente adaptado de la Política de privacidad de Discourse.

- title: Términos del servicio y Políticas de privacidad de %{instance} + title: Política de privacidad de %{instance} themes: contrast: Alto contraste default: Oscuro diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 31e10c6fa..92de8c872 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -28,7 +28,6 @@ es-MX: learn_more: Aprende más logged_in_as_html: Actualmente estás conectado como %{username}. logout_before_registering: Actualmente ya has iniciado sesión. - privacy_policy: Política de privacidad rules: Normas del servidor rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:' see_whats_happening: Ver lo que está pasando @@ -39,7 +38,6 @@ es-MX: other: estados status_count_before: Qué han escrito tagline: Red social descentralizada - terms: Condiciones de servicio unavailable_content: Contenido no disponible unavailable_content_description: domain: Servidor @@ -796,9 +794,6 @@ es-MX: site_short_description: desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia. title: Descripción corta de la instancia - site_terms: - desc_html: Puedes escribir tus propias políticas de privacidad, términos de servicio u otras legalidades. Puedes usar tags HTML - title: Términos de servicio personalizados site_title: Nombre de instancia thumbnail: desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px @@ -1686,7 +1681,6 @@ es-MX:

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

Este documento es CC-BY-SA. Fue actualizado por última vez el 26 de mayo de 2022.

Adaptado originalmente desde la política de privacidad de Discourse.

- title: Términos del Servicio y Políticas de Privacidad de %{instance} themes: contrast: Alto contraste default: Mastodon diff --git a/config/locales/es.yml b/config/locales/es.yml index 8d9c2bbb3..14e9cc665 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -28,7 +28,6 @@ es: learn_more: Aprende más logged_in_as_html: Actualmente has iniciado sesión como %{username}. logout_before_registering: Ya has iniciado sesión. - privacy_policy: Política de privacidad rules: Normas del servidor rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:' see_whats_happening: Ver lo que está pasando @@ -39,7 +38,6 @@ es: other: estados status_count_before: Qué han escrito tagline: Red social descentralizada - terms: Condiciones de servicio unavailable_content: Contenido no disponible unavailable_content_description: domain: Servidor @@ -796,9 +794,6 @@ es: site_short_description: desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia. title: Descripción corta de la instancia - site_terms: - desc_html: Puedes escribir tus propias políticas de privacidad, términos de servicio u otras legalidades. Puedes usar tags HTML - title: Términos de servicio personalizados site_title: Nombre de instancia thumbnail: desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px @@ -1686,7 +1681,6 @@ es:

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

Este documento es CC-BY-SA. Fue actualizado por última vez el 26 de mayo de 2022.

Adaptado originalmente desde la política de privacidad de Discourse.

- title: Términos del Servicio y Políticas de Privacidad de %{instance} themes: contrast: Alto contraste default: Mastodon diff --git a/config/locales/et.yml b/config/locales/et.yml index 5b354afd9..f6df72ee0 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -25,7 +25,6 @@ et: See konto on virtuaalne näitleja, mis esindab tervet serverit ning mitte ühtegi kindlat isikut. Seda kasutatakse föderatiivsetel põhjustel ning seda ei tohiks blokeerida, välja arvatud juhul, kui soovite blokeerida tervet serverit, kuid sellel juhul soovitame hoopis kasutada domeeni blokeerimist. learn_more: Lisateave - privacy_policy: Privaatsuspoliitika rules: Serveri reeglid rules_html: 'Järgneb kokkuvõte reeglitest, mida pead järgima, kui lood endale siin Mastodoni serveris konto:' see_whats_happening: Vaata, mis toimub @@ -35,7 +34,6 @@ et: one: postitust other: staatuseid status_count_before: Kes on avaldanud - terms: Kasutustingimused unavailable_content: Sisu pole saadaval unavailable_content_description: reason: Põhjus @@ -451,9 +449,6 @@ et: site_short_description: desc_html: Kuvatud küljeribal ja metasiltides. Kirjelda, mis on Mastodon ja mis on selles serveris erilist ühes lõigus. title: Serveri lühikirjeldus - site_terms: - desc_html: Te saate kirjutada oma privaatsuspoliitika, kasutustingimused jm seaduslikku infot. Te saate kasutada HTMLi silte - title: Kasutustingimused site_title: Serveri nimi thumbnail: desc_html: Kasutatud OpenGraph ja API eelvaadeteks. 1200x630px soovitatud @@ -938,8 +933,6 @@ et: sensitive_content: Tundlik sisu tags: does_not_match_previous_name: ei ühti eelmise nimega - terms: - title: "%{instance} Kasutustingimused ja Privaatsuspoliitika" themes: contrast: Mastodon (Kõrge kontrast) default: Mastodon (Tume) diff --git a/config/locales/eu.yml b/config/locales/eu.yml index f0910aaba..9d783724c 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -26,7 +26,6 @@ eu: learn_more: Ikasi gehiago logged_in_as_html: "%{username} bezala saioa hasita zaude." logout_before_registering: Saioa hasi duzu jada. - privacy_policy: Pribatutasun politika rules: Zerbitzariaren arauak rules_html: 'Behean Mastodon zerbitzari honetan kontua eduki nahi baduzu jarraitu beharreko arauen laburpena daukazu:' see_whats_happening: Ikusi zer gertatzen ari den @@ -36,7 +35,6 @@ eu: one: bidalketa other: bidalketa status_count_before: Hauek - terms: Erabilera baldintzak unavailable_content: Eduki eskuraezina unavailable_content_description: domain: Zerbitzaria @@ -684,9 +682,6 @@ eu: site_short_description: desc_html: Albo-barra eta meta etiketetan bistaratua. Deskribatu zerk egiten duen Mastodon zerbitzari hau berezia paragrafo batean. Hutsik lagatzekotan lehenetsitako deskripzioa agertuko da. title: Zerbitzariaren deskripzio laburra - site_terms: - desc_html: Zure pribatutasun politika, erabilera baldintzak eta bestelako testu legalak idatzi ditzakezu. HTML etiketak erabili ditzakezu - title: Erabilera baldintza pertsonalizatuak site_title: Zerbitzariaren izena thumbnail: desc_html: Aurrebistetarako erabilia OpenGraph eta API bidez. 1200x630px aholkatzen da @@ -1385,8 +1380,6 @@ eu: sensitive_content: 'Kontuz: Eduki hunkigarria' tags: does_not_match_previous_name: ez dator aurreko izenarekin bat - terms: - title: "%{instance} instantziaren erabilera baldintzak eta pribatutasun politika" themes: contrast: Mastodon (Kontraste altua) default: Mastodon (Iluna) diff --git a/config/locales/fa.yml b/config/locales/fa.yml index fa6448770..39424f3d6 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -28,7 +28,6 @@ fa: learn_more: بیشتر بدانید logged_in_as_html: شما هم‌اکنون به عنوان %{username} وارد شده‌اید. logout_before_registering: شما هم‌اکنون وارد شده‌اید. - privacy_policy: سیاست رازداری rules: قوانین کارساز rules_html: 'در زیر خلاصه‌ای از قوانینی که در صورت علاقه به داشتن حسابی روی این کارساز ماستودون، باید رعایت کنید آمده است:' see_whats_happening: ببینید چه خبر است @@ -38,7 +37,6 @@ fa: one: چیز نوشته‌اند other: چیز نوشته‌اند status_count_before: که در کنار هم - terms: شرایط خدمت unavailable_content: محتوای ناموجود unavailable_content_description: domain: کارساز @@ -664,9 +662,6 @@ fa: site_short_description: desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحه‌ها نمایش می‌یابد. در یک بند توضیح دهید که ماستودون چیست و چرا این کارساز با بقیه فرق دارد. title: توضیح کوتاه دربارهٔ سرور - site_terms: - desc_html: می‌توانید سیاست رازداری، شرایط استفاده، یا سایر مسائل قانونی را به دلخواه خود بنویسید. تگ‌های HTML هم مجاز است - title: شرایط استفادهٔ سفارشی site_title: نام سرور thumbnail: desc_html: برای دیدن با OpenGraph و رابط برنامه‌نویسی. وضوح پیشنهادی ۱۲۰۰×۶۳۰ پیکسل @@ -1352,8 +1347,6 @@ fa: sensitive_content: محتوای حساس tags: does_not_match_previous_name: با نام پیشین مطابق نیست - terms: - title: شرایط استفاده و سیاست رازداری %{instance} themes: contrast: ماستودون (سایه‌روشن بالا) default: ماستودون (تیره) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 397a40e69..1416c1250 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -28,7 +28,6 @@ fi: learn_more: Lisätietoja logged_in_as_html: Olet kirjautunut sisään nimellä %{username}. logout_before_registering: Olet jo kirjautunut sisään. - privacy_policy: Tietosuojakäytäntö rules: Palvelimen säännöt rules_html: 'Alla on yhteenveto säännöistä, joita sinun on noudatettava, jos haluat olla tili tällä Mastodonin palvelimella:' see_whats_happening: Näe mitä tapahtuu @@ -39,7 +38,6 @@ fi: other: julkaisua status_count_before: Julkaistu tagline: Hajautettu sosiaalinen verkosto - terms: Käyttöehdot unavailable_content: Moderoidut palvelimet unavailable_content_description: domain: Palvelin @@ -790,9 +788,6 @@ fi: site_short_description: desc_html: Näytetään sivupalkissa ja kuvauksessa. Kerro yhdessä kappaleessa, mitä Mastodon on ja mikä tekee palvelimesta erityisen. title: Lyhyt instanssin kuvaus - site_terms: - desc_html: Tähän voit kirjoittaa tietosuojakäytännöistä, käyttöehdoista ja sen sellaisista asioista. Voit käyttää HTML-tageja - title: Omavalintaiset käyttöehdot site_title: Instanssin nimi thumbnail: desc_html: Käytetään esikatseluissa OpenGraphin ja API:n kautta. Suosituskoko 1200x630 pikseliä @@ -1618,8 +1613,6 @@ fi: too_late: On liian myöhäistä vedota tähän varoitukseen tags: does_not_match_previous_name: ei vastaa edellistä nimeä - terms: - title: "%{instance}, käyttöehdot ja tietosuojakäytäntö" themes: contrast: Mastodon (Korkea kontrasti) default: Mastodon (Tumma) diff --git a/config/locales/fr.yml b/config/locales/fr.yml index a0409693c..ff10ff636 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -28,7 +28,6 @@ fr: learn_more: En savoir plus logged_in_as_html: Vous êtes actuellement connecté·e en tant que %{username}. logout_before_registering: Vous êtes déjà connecté·e. - privacy_policy: Politique de confidentialité rules: Règles du serveur rules_html: 'Voici un résumé des règles que vous devez suivre si vous voulez avoir un compte sur ce serveur de Mastodon :' see_whats_happening: Quoi de neuf @@ -39,7 +38,6 @@ fr: other: messages status_count_before: Ayant publié tagline: Réseau social décentralisé - terms: Conditions d’utilisation unavailable_content: Serveurs modérés unavailable_content_description: domain: Serveur @@ -781,9 +779,6 @@ fr: site_short_description: desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description du serveur sera affiché par défaut. title: Description courte du serveur - site_terms: - desc_html: Vous pouvez écrire votre propre politique de confidentialité, conditions d’utilisation ou autre jargon juridique. Vous pouvez utiliser des balises HTML - title: Politique de confidentialité site_title: Nom du serveur thumbnail: desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé @@ -1676,7 +1671,6 @@ fr:

Ce document est publié sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 26 mai 2022.

Initialement adapté de la politique de confidentialité de Discourse.

- title: Conditions d’utilisation et politique de confidentialité de %{instance} themes: contrast: Mastodon (Contraste élevé) default: Mastodon (Sombre) diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 19a67a8ec..4656b83db 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -2,7 +2,6 @@ ga: about: api: API - privacy_policy: Polasaí príobháideachais unavailable_content_description: domain: Freastalaí reason: Fáth diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 7c8df8f6b..2f0639990 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -28,7 +28,6 @@ gd: learn_more: Barrachd fiosrachaidh logged_in_as_html: Tha thu air do chlàradh a-steach an-dràsta mar %{username}. logout_before_registering: Tha thu air clàradh a-steach mu thràth. - privacy_policy: Poileasaidh prìobhaideachd rules: Riaghailtean an fhrithealaiche rules_html: 'Tha geàrr-chunntas air na riaghailtean a dh’fheumas tu gèilleadh riutha ma tha thu airson cunntas fhaighinn air an fhrithealaiche Mastodon seo gu h-ìosal:' see_whats_happening: Faic dè tha dol @@ -41,7 +40,6 @@ gd: two: phost status_count_before: A dh’fhoillsich tagline: Lìonra sòisealta sgaoilte - terms: Teirmichean na seirbheise unavailable_content: Frithealaichean fo mhaorsainneachd unavailable_content_description: domain: Frithealaiche @@ -813,9 +811,6 @@ gd: site_short_description: desc_html: Nochdaidh seo air a’ bhàr-taoibh agus sna meata-thagaichean. Mìnich dè th’ ann am Mastodon agus dè tha sònraichte mun fhrithealaiche agad ann an aon earrann a-mhàin. title: Tuairisgeul goirid an fhrithealaiche - site_terms: - desc_html: "’S urrainn dhut am poileasaidh prìobhaideachd no teirmichean na seirbheise agad fhèin no fiosrachadh laghail sa bith eile a sgrìobhadh. ‘S urrainn dhut tagaichean HTML a chleachdadh" - title: Teirmichean gnàthaichte na seirbheise site_title: Ainm an fhrithealaiche thumbnail: desc_html: Thèid seo a chleachdadh airson ro-sheallaidhean slighe OpenGraph no API. Mholamaid 1200x630px @@ -1748,7 +1743,6 @@ gd:

Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-26mh dhen Chèitean 2022.

Chaidh a fhreagarrachadh o thùs o phoileasaidh prìobhaideachd Discourse.

- title: Teirmichean na seirbheise ⁊ poileasaidh prìobhaideachd %{instance} themes: contrast: Mastodon (iomsgaradh àrd) default: Mastodon (dorcha) diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 6c32fcaf3..23b3d52ae 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -28,7 +28,7 @@ gl: learn_more: Saber máis logged_in_as_html: Entraches como %{username}. logout_before_registering: Xa iniciaches sesión. - privacy_policy: Política de privacidade + privacy_policy: Política de Privacidade rules: Regras do servidor rules_html: 'Aquí tes un resumo das regras que debes seguir se queres ter unha conta neste servidor de Mastodon:' see_whats_happening: Mira o que acontece @@ -39,7 +39,6 @@ gl: other: publicacións status_count_before: Que publicaron tagline: Rede social descentralizada - terms: Termos do servizo unavailable_content: Contido non dispoñíbel unavailable_content_description: domain: Servidor @@ -797,8 +796,8 @@ gl: desc_html: Amosado na barra lateral e nos cancelos meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baleiro, amosará a descrición do servidor. title: Descrición curta do servidor site_terms: - desc_html: Podes escribir a túa propia política de privacidade, termos de servizo ou aclaracións legais. Podes empregar cancelos HTML - title: Termos de servizo personalizados + desc_html: Podes escribir a túa propia Política de Privacidade e usar etiquetas HTML + title: Política de Privacidade propia site_title: Nome do servidor thumbnail: desc_html: Utilizado para vistas previsas vía OpenGraph e API. Recoméndase 1200x630px @@ -1686,7 +1685,7 @@ gl:

Se decidimos cambiar a nosa política de privacidade publicaremos os cambios nesta páxina.

Este documento ten licenza CC-BY-SA. Actualizouse o 26 de maio de 2022.

Adaptado do orixinal política de privacidade de Discourse.

- title: "%{instance} Termos do Servizo e Política de Intimidade" + title: Política de Privacidade de %{instance} themes: contrast: Mastodon (Alto contraste) default: Mastodon (Escuro) diff --git a/config/locales/he.yml b/config/locales/he.yml index c340f6e6c..3ec99349a 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -28,7 +28,6 @@ he: learn_more: מידע נוסף logged_in_as_html: הנך מחובר/ת כרגע כ-%{username}. logout_before_registering: חשבון זה כבר מחובר. - privacy_policy: מדיניות פרטיות rules: כללי השרת rules_html: 'להלן סיכום הכללים שעליך לעקוב אחריהם על מנת להשתמש בחשבון בשרת מסטודון זה:' see_whats_happening: מה קורה כעת @@ -41,7 +40,6 @@ he: two: פוסטים status_count_before: שכתבו tagline: רשת חברתית מבוזרת - terms: תנאי שימוש unavailable_content: שרתים מוגבלים unavailable_content_description: domain: שרת @@ -822,9 +820,6 @@ he: site_short_description: desc_html: מוצג בעמודה הצידית ובמטא תגים. מתאר מהו מסטודון ומה מיחד שרת זה בפסקה בודדת. title: תאור שרת קצר - site_terms: - desc_html: ניתן לכתוב מדיניות פרטיות, תנאי שירות ושאר מסמכים חוקיים בעצמך. ניתן להשתמש בתגי HTML - title: תנאי שירות יחודיים site_title: כותרת האתר thumbnail: desc_html: משמש לתצוגה מקדימה דרך OpenGraph והממשק. מומלץ 1200x630px @@ -1751,7 +1746,6 @@ he:

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

- title: תנאי שימוש ומדיניות פרטיות ב-%{instance} themes: contrast: מסטודון (ניגודיות גבוהה) default: מסטודון (כהה) diff --git a/config/locales/hi.yml b/config/locales/hi.yml index d0b1082fc..9a9e3aa7b 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -5,7 +5,6 @@ hi: active_count_after: सक्रिय contact: संपर्क learn_more: अधिक जानें - privacy_policy: गोपनीयता नीति status_count_after: one: स्थिति other: स्थितियां diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 6f2d41399..89ce1b625 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -14,11 +14,9 @@ hr: documentation: Dokumentacija get_apps: Isprobajte mobilnu aplikaciju learn_more: Saznajte više - privacy_policy: Politika privatnosti server_stats: 'Statistika poslužitelja:' source_code: Izvorni kôd status_count_before: Koji su objavili - terms: Uvjeti pružanja usluga unavailable_content: Moderirani poslužitelji accounts: follow: Prati diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 53e514f15..582eb7d82 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -28,7 +28,6 @@ hu: learn_more: Tudj meg többet logged_in_as_html: Belépve, mint %{username}. logout_before_registering: Már be vagy jelentkezve. - privacy_policy: Adatvédelmi szabályzat rules: Szerverünk szabályai rules_html: 'Alább látod azon követendő szabályok összefoglalóját, melyet be kell tartanod, ha szeretnél fiókot ezen a szerveren:' see_whats_happening: Nézd, mi történik @@ -39,7 +38,6 @@ hu: other: bejegyzést írt status_count_before: Eddig tagline: Decentralizált szociális hálózat - terms: Felhasználási feltételek unavailable_content: Kimoderált szerverek unavailable_content_description: domain: Szerver @@ -798,9 +796,6 @@ hu: site_short_description: desc_html: Oldalsávban és meta tag-ekben jelenik meg. Írd le, mi teszi ezt a szervert különlegessé egyetlen bekezdésben. title: Rövid leírás - site_terms: - desc_html: Megírhatod saját adatkezelési szabályzatodat, felhasználási feltételeidet vagy más hasonló jellegű dokumentumodat. HTML-tageket is használhatsz - title: Egyéni felhasználási feltételek site_title: A szerver neve thumbnail: desc_html: Az OpenGraph-on és API-n keresztüli előnézetekhez használatos. Ajánlott mérete 1200×630 képpont. @@ -1721,7 +1716,6 @@ hu:

Ez a dokumentum CC-BY-SA. Utoljára 2022.05.26-án frissült.

Eredetileg innen adaptálva Discourse privacy policy.

- title: "%{instance} Felhasználási feltételek és Adatkezelési nyilatkozat" themes: contrast: Mastodon (Nagy kontrasztú) default: Mastodon (Sötét) diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 61b08d6e0..164bafbbe 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -23,7 +23,6 @@ hy: hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում instance_actor_flash: "Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։ \n" learn_more: Իմանալ ավելին - privacy_policy: Գաղտնիության քաղաքականություն rules: Սերուերի կանոնները rules_html: Այս սերուերում հաշիւ ունենալու համար անհրաժեշտ է պահպանել ստորեւ նշուած կանոնները։ see_whats_happening: Տես ինչ կը կատարուի @@ -33,7 +32,6 @@ hy: one: գրառում other: ստատուս status_count_before: Որոնք արել են՝ - terms: Ծառայութեան պայմանները unavailable_content: Մոդերացուող սպասարկիչներ unavailable_content_description: domain: Սպասարկիչ @@ -466,9 +464,6 @@ hy: title: Կայքի նկարագրութիւն site_short_description: title: Կայքի հակիրճ նկարագրութիւն - site_terms: - desc_html: Դու կարող ես գրել քո սեփական գաղտնիութեան քաղաքականութիւնը, օգտագործման պայմանները եւ այլ կանոններ։ Կարող ես օգտագործել HTML թեգեր - title: Սեփական օգտագործման կանոնները site_title: Սպասարկչի անուն thumbnail: title: Հանգոյցի նկարը diff --git a/config/locales/id.yml b/config/locales/id.yml index a66b62d52..516ba321a 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -26,7 +26,6 @@ id: learn_more: Pelajari selengkapnya logged_in_as_html: Anda sedang masuk sebagai %{username}. logout_before_registering: Anda sudah masuk. - privacy_policy: Kebijakan Privasi rules: Aturan server rules_html: 'Di bawah ini adalah ringkasan aturan yang perlu Anda ikuti jika Anda ingin memiliki akun di server Mastodon ini:' see_whats_happening: Lihat apa yang sedang terjadi @@ -36,7 +35,6 @@ id: other: status status_count_before: Yang telah menulis tagline: Jejaring sosial terdesentralisasi - terms: Kebijakan layanan unavailable_content: Konten tak tersedia unavailable_content_description: domain: Server @@ -700,9 +698,6 @@ id: site_short_description: desc_html: Ditampilkan pada bilah samping dan tag meta. Jelaskan apa itu Mastodon dan yang membuat server ini spesial dalam satu paragraf. title: Deskripsi server pendek - site_terms: - desc_html: Anda dapat menulis kebijakan privasi, ketentuan layanan, atau hal legal lainnya sendiri. Anda dapat menggunakan tag HTML - title: Ketentuan layanan kustom site_title: Judul Situs thumbnail: desc_html: Dipakai sebagai pratinjau via OpenGraph dan API. Direkomendasikan 1200x630px @@ -1485,8 +1480,6 @@ id: too_late: Terlambat untuk mengajukan banding hukuman ini tags: does_not_match_previous_name: tidak cocok dengan nama sebelumnya - terms: - title: "%{instance} Ketentuan Layanan dan Kebijakan Privasi" themes: contrast: Mastodon (Kontras tinggi) default: Mastodon (Gelap) diff --git a/config/locales/io.yml b/config/locales/io.yml index 56258e646..6cb06d249 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -39,7 +39,6 @@ io: other: posti status_count_before: Qua publikigis tagline: Necentralizita sociala reto - terms: Serveskondicioni unavailable_content: Jerata servili unavailable_content_description: domain: Servilo @@ -797,8 +796,8 @@ io: desc_html: Montresas en flankobaro e metatagi. Deskriptez Mastodon e por quo ca servilo esas specala per 1 paragrafo. title: Kurta servildeskripto site_terms: - desc_html: Vu povas skribar sua privatesguidilo, serveskondicioni e altra legi. Vu povas uzar HTML-tagi - title: Kustumizita serveskondicioni + desc_html: Vu povas adjuntar sua privatesguidilo. Vu povas uzar tagi di HTML + title: Kustumizita privatesguidilo site_title: Site title thumbnail: desc_html: Uzesis por previdi tra OpenGraph e API. 1200x630px rekomendesas @@ -1720,7 +1719,7 @@ io:

Ca dokumento esas CC-BY-SA.

Tradukesis e modifikesis de Angla de Discourse privacy policy.

- title: Serveskondiconi e Privatesguidilo di %{instance} + title: Privatesguidilo di %{instance} themes: contrast: Mastodon (Alta kontrasteso) default: Mastodon (Obskura) diff --git a/config/locales/is.yml b/config/locales/is.yml index 841645c91..2448647fa 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -39,7 +39,6 @@ is: other: færslur status_count_before: Sem stóðu fyrir tagline: Dreift samfélagsnet - terms: Þjónustuskilmálar unavailable_content: Ekki tiltækt efni unavailable_content_description: domain: Vefþjónn @@ -797,8 +796,8 @@ is: desc_html: Birt á hliðarspjaldi og í lýsigögnum. Lýstu því hvað Mastodon gerir og hvað það er sem geri þennan vefþjón sérstakan, í einni málsgrein. title: Stutt lýsing á netþjóninum site_terms: - desc_html: Þú getur skrifað þína eigin persónuverndarstefnu, þjónustuskilmála eða annað lagatæknilegt. Þú getur notað HTML-einindi - title: Sérsniðnir þjónustuskilmálar + desc_html: Þú getur skrifað þína eigin persónuverndarstefnu. Nota má HTML-einindi + title: Sérsniðin persónuverndarstefna site_title: Heiti vefþjóns thumbnail: desc_html: Notað við forskoðun í gegnum OpenGraph og API-kerfisviðmót. Mælt með 1200×630 mynddílum @@ -1719,7 +1718,7 @@ is:

Þetta skjal er CC-BY-SA nptkunarleyfi. Það var síðast uppfært 26. maí 2022.

Upphaflega aðlagað frá persónuverndarstefnu Discourse.

- title: "%{instance} - Þjónustuskilmálar og persónuverndarstefna" + title: Persónuverndarstefna á %{instance} themes: contrast: Mastodon (mikil birtuskil) default: Mastodon (dökkt) diff --git a/config/locales/it.yml b/config/locales/it.yml index ff3120f34..5e670cb07 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -28,7 +28,7 @@ it: learn_more: Scopri altro logged_in_as_html: Sei correntemente connesso come %{username}. logout_before_registering: Hai già effettuato l'accesso. - privacy_policy: Politica della privacy + privacy_policy: Politica sulla Privacy rules: Regole del server rules_html: 'Di seguito è riportato un riassunto delle regole che devi seguire se vuoi avere un account su questo server di Mastodon:' see_whats_happening: Guarda cosa succede @@ -39,7 +39,6 @@ it: other: stati status_count_before: Che hanno pubblicato tagline: Social network decentralizzato - terms: Termini di Servizio unavailable_content: Server moderati unavailable_content_description: domain: Server @@ -797,8 +796,8 @@ it: 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 del server. title: Breve descrizione del server 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 + desc_html: Puoi scrivere la tua politica sulla privacy. Puoi usare i tag HTML + title: Politica sulla privacy personalizzata site_title: Nome del server thumbnail: desc_html: Usato per anteprime tramite OpenGraph e API. 1200x630px consigliati @@ -1721,7 +1720,7 @@ it:

Questo documento è CC-BY-SA. L'ultimo aggiornamento è del 26 maggio 2022.

Adattato originalmente dal Discorso Politica della Privacy.

- title: "%{instance} Termini di servizio e politica della privacy" + title: Politica sulla privacy di %{instance} themes: contrast: Mastodon (contrasto elevato) default: Mastodon (scuro) diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 133835b58..ae71d9924 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -36,7 +36,6 @@ ja: other: 投稿 status_count_before: 投稿数 tagline: 分散型ソーシャルネットワーク - terms: 利用規約 unavailable_content: 制限中のサーバー unavailable_content_description: domain: サーバー @@ -97,11 +96,17 @@ ja: avatar: アイコン by_domain: ドメイン change_email: + changed_msg: メールアドレスを変更しました! current_email: 現在のメールアドレス label: メールアドレスを変更 new_email: 新しいメールアドレス submit: メールアドレスの変更 title: "%{username}さんのメールアドレスを変更" + change_role: + changed_msg: ロールを変更しました! + label: ロールを変更 + no_role: ロールがありません + title: "%{username}さんのロールを変更" confirm: 確認 confirmed: 確認済み confirming: 確認中 @@ -179,7 +184,7 @@ ja: reset: リセット reset_password: パスワード再設定 resubscribe: 再講読 - role: 役割 + role: ロール search: 検索 search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー search_same_ip: 同じIPのユーザーを検索 @@ -222,17 +227,21 @@ ja: approve_user: ユーザーの承認 assigned_to_self_report: 通報の担当者に設定 change_email_user: ユーザーのメールアドレスを変更 + change_role_user: ユーザーのロールを変更 confirm_user: ユーザーの確認 create_account_warning: 警告を作成 create_announcement: お知らせを作成 + create_canonical_email_block: メールブロックを作成 create_custom_emoji: カスタム絵文字を作成 create_domain_allow: 連合を許可 create_domain_block: ドメインブロックを作成 create_email_domain_block: メールドメインブロックを作成 create_ip_block: IPルールを作成 create_unavailable_domain: 配送できないドメインを作成 + create_user_role: ロールを作成 demote_user: ユーザーを降格 destroy_announcement: お知らせを削除 + destroy_canonical_email_block: メールブロックを削除 destroy_custom_emoji: カスタム絵文字を削除 destroy_domain_allow: 連合許可を外す destroy_domain_block: ドメインブロックを削除 @@ -241,6 +250,7 @@ ja: destroy_ip_block: IPルールを削除 destroy_status: 投稿を削除 destroy_unavailable_domain: 配送できないドメインを削除 + destroy_user_role: ロールを削除 disable_2fa_user: 二要素認証を無効化 disable_custom_emoji: カスタム絵文字を無効化 disable_sign_in_token_auth_user: ユーザーのメールトークン認証を無効にする @@ -267,7 +277,9 @@ ja: update_announcement: お知らせを更新 update_custom_emoji: カスタム絵文字を更新 update_domain_block: ドメインブロックを更新 + update_ip_block: IPルールを更新 update_status: 投稿を更新 + update_user_role: ロールを更新 actions: approve_appeal_html: "%{name}さんが%{target}さんからの抗議を承認しました" approve_user_html: "%{target}から登録された%{name}さんを承認しました" @@ -622,9 +634,9 @@ ja: updated_at: 更新日時 view_profile: プロフィールを表示 roles: - add_new: 役割を追加 + add_new: ロールを追加 assigned_users: - other: "%{count} 人" + other: "%{count}人" categories: administration: 管理 devops: 開発者 @@ -632,24 +644,24 @@ ja: moderation: モデレーション delete: 削除 description_html: "ユーザー ロールを使用すると、ユーザーがアクセスできる Mastodon の機能や領域をカスタマイズできます。" - edit: "'%{name}' の役割を編集" + edit: "『%{name}』のロールを編集" everyone: デフォルトの権限 everyone_full_description_html: これは、割り当てられたロールを持っていないものであっても、 すべてのユーザー に影響を与える 基本ロールです。 他のすべてのロールは、そこから権限を継承します。 permissions_count: - other: "%{count} つの権限" + other: "%{count}件の権限" privileges: administrator: 管理者 administrator_description: この権限を持つユーザーはすべての権限をバイパスします delete_user_data: ユーザーデータの削除 delete_user_data_description: ユーザーは、遅滞なく他のユーザーのデータを削除することができます invite_users: ユーザーを招待 - invite_users_description: ユーザーがサーバーに新しい人を招待できるようにします + invite_users_description: ユーザーが新しい人を招待できるようにします manage_announcements: お知らせの管理 - manage_announcements_description: ユーザーがサーバー上のアナウンスを管理できるようにします + manage_announcements_description: ユーザーがアナウンスを管理できるようにします manage_appeals: 抗議の管理 manage_appeals_description: ユーザーはモデレーションアクションに対する抗議を確認できます manage_blocks: ブロックの管理 - manage_blocks_description: ユーザーが電子メールプロバイダとIPアドレスをブロックできるようにします + manage_blocks_description: ユーザーがメールプロバイダとIPアドレスをブロックできるようにします manage_custom_emojis: カスタム絵文字を管理 manage_custom_emojis_description: ユーザーがサーバー上のカスタム絵文字を管理できるようにします manage_federation: 連合の管理 @@ -657,7 +669,7 @@ ja: manage_invites: 招待を管理 manage_reports: レポートの管理 manage_reports_description: ユーザーがレポートを確認したり、モデレーションアクションを実行したりできます。 - manage_roles: 役職の管理 + manage_roles: ロールの管理 manage_rules: ルールの管理 manage_rules_description: ユーザーがサーバールールを変更できるようにします manage_settings: 設定の管理 @@ -666,7 +678,7 @@ ja: manage_user_access: アクセス権を管理 manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。 manage_users: ユーザーの管理 - manage_webhooks: Webhook の管理 + manage_webhooks: Webhookの管理 manage_webhooks_description: 管理者イベントのWebhookを設定できます。 view_audit_log: 監査ログの表示 view_audit_log_description: ユーザーがサーバー上で管理アクションの履歴を表示できるようにします @@ -674,7 +686,7 @@ ja: view_dashboard_description: ユーザーがダッシュボードやさまざまなメトリクスにアクセスできるようにします view_devops: 開発者 view_devops_description: Sidekiq と pgHero ダッシュボードにアクセスできるようにします - title: 権限 + title: ロール rules: add_new: ルールを追加 delete: 削除 @@ -749,8 +761,7 @@ ja: desc_html: サイドバーとmetaタグに表示されます。Mastodonとは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。 title: 短いサーバーの説明 site_terms: - desc_html: 独自のプライバシーポリシーや利用規約、その他の法的根拠を記述できます。HTMLタグが使えます - title: カスタム利用規約 + title: カスタムプライバシーポリシー site_title: サーバーの名前 thumbnail: desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です @@ -1129,13 +1140,15 @@ ja: errors: invalid_context: 対象がないか無効です index: - contexts: "%{contexts} のフィルター" + contexts: "%{contexts}のフィルター" delete: 削除 empty: フィルターはありません。 - expires_in: "%{distance} で期限切れ" + expires_in: "%{distance}で期限切れ" expires_on: 有効期限 %{date} keywords: other: "%{count}件のキーワード" + statuses: + other: "%{count}件の投稿" title: フィルター new: save: 新規フィルターを保存 @@ -1256,7 +1269,7 @@ ja: notification_mailer: admin: report: - subject: "%{name} がレポートを送信しました" + subject: "%{name}さんがレポートを送信しました" sign_up: subject: "%{name}さんがサインアップしました" favourite: @@ -1612,7 +1625,7 @@ ja:

この文章のライセンスはCC-BY-SAです。最終更新日は2021年6月1日です。

オリジナルの出典: Discourse privacy policy

- title: "%{instance} 利用規約・プライバシーポリシー" + title: "%{instance}のプライバシーポリシー" themes: contrast: Mastodon (ハイコントラスト) default: Mastodon (ダーク) diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 288e50edd..64b0419ed 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -13,10 +13,8 @@ ka: documentation: დოკუმენტაცია hosted_on: მასტოდონს მასპინძლობს %{domain} learn_more: გაიგე მეტი - privacy_policy: კონფიდენციალურობის პოლიტიკა source_code: კოდი status_count_before: ვინც უავტორა - terms: მომსახურების პირობები user_count_before: სახლი what_is_mastodon: რა არის მასტოდონი? accounts: @@ -256,9 +254,6 @@ ka: site_short_description: desc_html: გამოჩნდება გვერდით ბარში და მეტა ტეგებში. აღწერეთ თუ რა არის მასტოდონი და რა ხდის ამ სერვერს უნიკალურს ერთ პარაგრაფში. თუ ცარიელია, გამოჩნდება ინსტანციის აღწერილობა. title: აჩვენეთ ინსტანციის აღწერილობა - site_terms: - desc_html: შეგიძლიათ დაწეროთ საკუთარი კონფიდენციალურობის პოლიტიკა, მომსახურების პირობები ან სხვა იურიდიული დოკუმენტი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები - title: პერსონალიზირებული მომსახურების პირობები site_title: ინსტანციის სახელი thumbnail: desc_html: გამოიყენება პრევიუებისთვის ოუფენ-გრეფში და აპი-ში. 1200/630პიქს. რეკომენდირებული @@ -567,8 +562,6 @@ ka: pinned: აპინული ტუტი reblogged: გაზრდილი sensitive_content: მგრძნობიარე კონტენტი - terms: - title: "%{instance} მომსახურების პირობები და კონფიდენციალურობის პოლიტიკა" themes: contrast: მაღალი კონტრასტი default: მასტოდონი diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 8096b95f4..cda77cb6e 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -20,7 +20,6 @@ kab: get_apps: Ɛreḍ asnas aziraz hosted_on: Maṣṭudun yersen deg %{domain} learn_more: Issin ugar - privacy_policy: Tasertit tabaḍnit rules: Ilugan n uqeddac see_whats_happening: Ẓer d acu i iḍerrun server_stats: 'Tidaddanin n uqeddac:' @@ -29,7 +28,6 @@ kab: one: n tsuffeɣt other: n tsuffiɣin status_count_before: I d-yessuffɣen - terms: Tiwetlin n useqdec unavailable_content: Ulac agbur unavailable_content_description: domain: Aqeddac @@ -789,8 +787,6 @@ kab: stream_entries: pinned: Tijewwiqt yettwasentḍen sensitive_content: Agbur amḥulfu - terms: - title: Tiwtilin n useqdec akked tsertit tabaḍnit n %{instance} themes: contrast: Maṣṭudun (agnil awriran) default: Maṣṭudun (Aberkan) diff --git a/config/locales/kk.yml b/config/locales/kk.yml index b1c92f7eb..939e3c520 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -24,7 +24,6 @@ kk: Бұл аккаунт кез-келген жеке пайдаланушыны емес, сервердің өзін көрсету үшін қолданылатын виртуалды актер. Ол федерация мақсаттарында қолданылады және сіз барлығын бұғаттағыңыз келмейінше, бұғатталмауы керек, бұл жағдайда сіз домен блогын қолданған жөн. learn_more: Көбірек білу - privacy_policy: Құпиялылық саясаты see_whats_happening: Не болып жатқанын қараңыз server_stats: 'Сервер статистикасы:' source_code: Ашық коды @@ -32,7 +31,6 @@ kk: one: жазба other: жазба status_count_before: Барлығы - terms: Қолдану шарттары unavailable_content: Қолжетімсіз контент unavailable_content_description: domain: Сервер @@ -393,9 +391,6 @@ kk: site_short_description: desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to сервер description. title: Short сервер description - site_terms: - desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML тег - title: Қолдану шарттары мен ережелер site_title: Сервер аты thumbnail: desc_html: Used for previews via OpenGraph and API. 1200x630px рекоменделеді @@ -880,8 +875,6 @@ kk: sensitive_content: Нәзік мазмұн tags: does_not_match_previous_name: алдыңғы атқа сәйкес келмейді - terms: - title: "%{instance} Қызмет көрсету шарттары және Құпиялылық саясаты" themes: contrast: Mastodon (Жоғары контраст) default: Mastodon (Қою) diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 102d85393..946784a03 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -28,7 +28,7 @@ ko: learn_more: 자세히 logged_in_as_html: 현재 %{username}으로 로그인 했습니다. logout_before_registering: 이미 로그인 했습니다. - privacy_policy: 개인정보 정책 + privacy_policy: 개인정보 처리방침 rules: 서버 규칙 rules_html: '아래의 글은 이 마스토돈 서버에 계정이 있다면 따라야 할 규칙의 요약입니다:' see_whats_happening: 무슨 일이 일어나는 지 보기 @@ -38,7 +38,6 @@ ko: other: 개 status_count_before: 게시물 수 tagline: 분산화된 소셜 네트워크 - terms: 이용약관 unavailable_content: 이용 불가능한 컨텐츠 unavailable_content_description: domain: 서버 @@ -783,8 +782,8 @@ ko: desc_html: 사이드바와 메타 태그에 나타납니다. 마스토돈이 무엇이고 이 서버의 특징은 무엇인지 한 문장으로 설명하세요. title: 짧은 서버 설명 site_terms: - desc_html: 당신은 독자적인 개인정보 취급 방침이나 이용약관, 그 외의 법적 근거를 작성할 수 있습니다. HTML태그를 사용할 수 있습니다 - title: 커스텀 서비스 이용 약관 + desc_html: 자신만의 개인정보 처리방침을 작성할 수 있습니다. HTML 태그를 사용할 수 있습니다 + title: 사용자 지정 개인정보 처리방침 site_title: 서버 이름 thumbnail: desc_html: OpenGraph와 API의 미리보기로 사용 됩니다. 1200x630px을 권장합니다 @@ -1687,7 +1686,7 @@ ko:

이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2012년 5월 26일입니다.

Originally adapted from the Discourse privacy policy.

- title: "%{instance} 이용약관과 개인정보 취급 방침" + title: "%{instance} 개인정보 처리방침" themes: contrast: 마스토돈 (고대비) default: 마스토돈 (어두움) diff --git a/config/locales/ku.yml b/config/locales/ku.yml index b43e205d2..2dcba64dd 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -28,7 +28,7 @@ ku: learn_more: Bêtir fêr bibe logged_in_as_html: Tu niha wekî %{username} têketî ye. logout_before_registering: Jixwe te berê têketin kiriye. - privacy_policy: Polîtikaya nihêniyê + privacy_policy: Politîka taybetiyê rules: Rêbazên rajekar rules_html: 'Heger tu bixwazî ajimêrekî li ser rajekarê mastodon vebikî, li jêrê de kurtasî ya qaîdeyên ku tu guh bidî heye:' see_whats_happening: Binêre ka çi diqewime @@ -39,7 +39,6 @@ ku: other: şandî status_count_before: Hatin weşan tagline: Tora civakî ya nenavendî - terms: Peyama mercan unavailable_content: Rajekarên li hev kirî unavailable_content_description: domain: Rajekar @@ -799,8 +798,8 @@ ku: desc_html: Ew di alavdanka kêlekê û tagên meta de tên xuyakirin. Di yek paragrafê de rave bike ka Mastodon çi ye û ya ku ev rajekar taybetî dike. title: Danasîna rajekarê kurt site_terms: - desc_html: Tu dikarî polîtika nihêniyê xwe, mercên karûbar an nameyên din binvisîne. Tu dikarî nîşanên HTML-ê bi kar bîne - title: Mercên bikaranîn a kesanekirî + desc_html: Tu dikarî politîkaya taybetiyê ya xwe binivîsînî. Tu dikarî tagên HTML bi kar bînî + title: Politîka taybetiyê ya kesane site_title: Navê rajekar thumbnail: desc_html: Ji bo pêşdîtinên bi riya OpenGraph û API-yê têne bikaranîn. 1200x630px tê pêşniyar kirin @@ -1721,7 +1720,7 @@ ku:

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

- title: "%{instance} mercên bikaranîn û politîkayên nehêniyê" + title: Politîka taybetiyê ya %{instance} themes: contrast: Mastodon (Dijberiya bilind) default: Mastodon (Tarî) diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 4e79ca188..56bcccf67 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -11,10 +11,8 @@ lt: documentation: Dokumentacija hosted_on: Mastodon palaikomas naudojantis %{domain} talpinimu learn_more: Daugiau - privacy_policy: Privatumo Politika source_code: Šaltinio kodas status_count_before: Autorius - terms: Naudojimo sąlygos user_count_before: Namai what_is_mastodon: Kas tai, Mastodon? accounts: @@ -299,9 +297,6 @@ lt: site_short_description: desc_html: Rodoma šoniniame meniu ir meta žymėse. Apibūdink kas yra Mastodon, ir kas daro šį serverį išskirtiniu, vienu paragrafu. Jeigu tuščias, naudojamas numatytasis tekstas. title: Trumpas serverio apibūdinimas - site_terms: - desc_html: Jūs galite parašyti savo pačio privatumo politika, naudojimo sąlygas ar kita informacija. Galite naudoti HTML žymes - title: Išskirtinės naudojimosi taisyklės site_title: Serverio pavadinimas thumbnail: desc_html: Naudojama OpenGraph peržiūroms ir API. Rekomenduojama 1200x630px @@ -592,8 +587,6 @@ lt: pinned: Prisegtas toot'as reblogged: pakeltas sensitive_content: Jautrus turinys - terms: - title: "%{instance} Naudojimosi Sąlygos ir Privatumo Politika" themes: contrast: Mastodon (Didelio Kontrasto) default: Mastodon (Tamsus) diff --git a/config/locales/lv.yml b/config/locales/lv.yml index ae2087390..c645539c8 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -28,7 +28,7 @@ lv: learn_more: Uzzināt vairāk logged_in_as_html: Tu pašlaik esi pieteicies kā %{username}. logout_before_registering: Tu jau esi pieteicies. - privacy_policy: Privātuma politika + privacy_policy: Privātuma Politika rules: Servera noteikumi rules_html: 'Tālāk ir sniegts noteikumu kopsavilkums, kas jāievēro, ja vēlies izveidot kontu šajā Mastodon serverī:' see_whats_happening: Redzēt, kas notiek @@ -40,7 +40,6 @@ lv: zero: nav status_count_before: Kurš publicējis tagline: Decentralizēts sociālais tīkls - terms: Pakalpojuma noteikumi unavailable_content: Moderētie serveri unavailable_content_description: domain: Serveris @@ -813,8 +812,8 @@ lv: desc_html: Tiek parādīts sānjoslā un metatagos. Vienā rindkopā apraksti, kas ir Mastodon un ar ko šis serveris ir īpašs. title: Īss servera apraksts site_terms: - desc_html: Tu vari uzrakstīt savu privātuma politiku, pakalpojumu sniegšanas noteikumus vai citu likumīgu. Tu vari izmantot HTML tagus - title: Pielāgoti pakalpojuma sniegšanas noteikumi + desc_html: Tu vari uzrakstīt pats savu privātuma politiku. Vari izmantot HTML tagus + title: Pielāgot privātuma politiku site_title: Servera nosaukums thumbnail: desc_html: Izmanto priekšskatījumiem, izmantojot OpenGraph un API. Ieteicams 1200x630 pikseļi @@ -1753,7 +1752,7 @@ lv:

Šis dokuments ir CC-BY-SA. Pēdējo reizi tas tika atjaunināts 2022. gada 26. maijā.

Sākotnēji adaptēts no Discourse konfidencialitātes politikas.

- title: "%{instance} Pakalpojuma Noteikumi un Privātuma Politika" + title: "%{instance} Privātuma Politika" themes: contrast: Mastodon (Augsts kontrasts) default: Mastodon (Tumšs) diff --git a/config/locales/ml.yml b/config/locales/ml.yml index ea05859ac..df5be9c1e 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -11,11 +11,9 @@ ml: documentation: വിവരണം get_apps: മൊബൈൽ ആപ്പ് പരീക്ഷിക്കുക learn_more: കൂടുതൽ പഠിക്കുക - privacy_policy: സ്വകാര്യതാ നയം see_whats_happening: എന്തൊക്കെ സംഭവിക്കുന്നു എന്ന് കാണുക source_code: സോഴ്സ് കോഡ് status_count_before: ആരാൽ എഴുതപ്പെട്ടു - terms: സേവന വ്യവസ്ഥകൾ unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം unavailable_content_description: domain: സെർവർ diff --git a/config/locales/ms.yml b/config/locales/ms.yml index b80a0d5c9..7f090b00d 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -25,7 +25,6 @@ ms: Akaun ini ialah pelaku maya yang digunakan untuk mewakili pelayan itu sendiri dan bukannya mana-mana pengguna individu. Ia digunakan untuk tujuan persekutuan dan tidak patut disekat melainkan anda ingin menyekat keseluruhan tika, yang mana anda sepatutnya gunakan sekatan domain. learn_more: Ketahui lebih lanjut - privacy_policy: Polisi privasi rules: Peraturan pelayan rules_html: 'Di bawah ini ringkasan peraturan yang anda perlu ikuti jika anda ingin mempunyai akaun di pelayan Mastodon yang ini:' see_whats_happening: Lihat apa yang sedang berlaku @@ -34,7 +33,6 @@ ms: status_count_after: other: hantaran status_count_before: Siapa terbitkan - terms: Terma perkhidmatan unavailable_content: Pelayan disederhanakan unavailable_content_description: domain: Pelayan diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 4dabcf789..fed0785c8 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -26,7 +26,6 @@ nl: learn_more: Meer leren logged_in_as_html: Je bent momenteel ingelogd als %{username}. logout_before_registering: Je bent al ingelogd. - privacy_policy: Privacybeleid rules: Serverregels rules_html: 'Hieronder vind je een samenvatting van de regels die je op deze Mastodon-server moet opvolgen:' see_whats_happening: Kijk wat er aan de hand is @@ -37,7 +36,6 @@ nl: other: berichten status_count_before: Zij schreven tagline: Decentraal sociaal netwerk - terms: Gebruiksvoorwaarden unavailable_content: Gemodereerde servers unavailable_content_description: domain: Server @@ -706,9 +704,6 @@ nl: site_short_description: desc_html: Dit wordt gebruikt op de voorpagina, in de zijbalk op profielpagina's en als metatag in de paginabron. Beschrijf in één alinea wat Mastodon is en wat deze server speciaal maakt. title: Omschrijving Mastodonserver (website) - site_terms: - desc_html: Je kan hier jouw eigen privacybeleid, gebruiksvoorwaarden en ander juridisch jargon kwijt. Je kan HTML gebruiken - title: Aangepaste gebruiksvoorwaarden site_title: Naam Mastodonserver thumbnail: desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen @@ -1491,7 +1486,6 @@ nl:

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

- title: Gebruiksvoorwaarden en privacybeleid van %{instance} themes: contrast: Mastodon (hoog contrast) default: Mastodon (donker) diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 440259369..baf20ad72 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -24,7 +24,6 @@ nn: instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" learn_more: Lær meir logout_before_registering: Du er allereie logga inn. - privacy_policy: Personvernsreglar rules: Tenarreglar rules_html: 'Nedanfor er eit samandrag av reglar du må fylgje dersom du vil ha ein konto på denne Mastodontenaren:' see_whats_happening: Sjå kva som skjer @@ -32,7 +31,6 @@ nn: source_code: Kjeldekode status_count_before: Som skreiv tagline: Desentralisert sosialt nettverk - terms: Brukarvilkår unavailable_content: Utilgjengeleg innhald unavailable_content_description: domain: Sørvar @@ -546,9 +544,6 @@ nn: site_short_description: desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf. title: Stutt om tenaren - site_terms: - desc_html: Du kan skrive din egen personverns-strategi, bruksviklår og andre regler. Du kan bruke HTML tagger - title: Eigne brukarvilkår site_title: Tenarnamn thumbnail: desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales @@ -1104,8 +1099,6 @@ nn: sensitive_content: Følsomt innhold tags: does_not_match_previous_name: stemmar ikkje med det førre namnet - terms: - title: Tenestevilkår og personvernsvilkår for %{instance} themes: contrast: Mastodon (Høg kontrast) default: Mastodon (Mørkt) diff --git a/config/locales/no.yml b/config/locales/no.yml index 27b7be807..b93bd0a2c 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -23,7 +23,6 @@ hosted_on: Mastodon driftet på %{domain} instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" learn_more: Lær mer - privacy_policy: Privatlivsretningslinjer rules: Server regler rules_html: 'Nedenfor er et sammendrag av reglene du må følge om du vil ha en konto på denne serveren av Mastodon:' see_whats_happening: Se hva som skjer @@ -33,7 +32,6 @@ one: innlegg other: statuser status_count_before: Som skrev - terms: Bruksvilkår unavailable_content: Utilgjengelig innhold unavailable_content_description: domain: Tjener @@ -539,9 +537,6 @@ site_short_description: desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf. title: Kort tjenerbeskrivelse - site_terms: - desc_html: Du kan skrive din egen personverns-strategi, bruksviklår og andre regler. Du kan bruke HTML tagger - title: Skreddersydde bruksvilkår site_title: Nettstedstittel thumbnail: desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales @@ -1087,8 +1082,6 @@ sensitive_content: Følsomt innhold tags: does_not_match_previous_name: samsvarer ikke med det forrige navnet - terms: - title: "%{instance} Personvern og villkår for bruk av nettstedet" themes: contrast: Mastodon (Høykontrast) default: Mastodon diff --git a/config/locales/oc.yml b/config/locales/oc.yml index d8560fd1c..6fbe1c9c3 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -22,7 +22,6 @@ oc: get_apps: Ensajatz una aplicacion mobil hosted_on: Mastodon albergat sus %{domain} learn_more: Ne saber mai - privacy_policy: Politica de confidencialitat rules: Règlas del servidor see_whats_happening: Agachatz çò qu’arriba server_stats: 'Estatisticas del servidor :' @@ -31,7 +30,6 @@ oc: one: estatut other: estatuts status_count_before: qu’an escrich - terms: Condicions d’utilizacion unavailable_content: Contengut pas disponible unavailable_content_description: domain: Servidor @@ -483,9 +481,6 @@ oc: site_short_description: desc_html: Mostrat dins la barra laterala e dins las meta balisas. Explica çò qu’es Mastodon e perque aqueste servidor es especial en un solet paragraf. S’es void, serà garnit amb la descripcion del servidor. title: Descripcion corta del servidor - site_terms: - desc_html: Afichada sus la pagina de las condicions d’utilizacion
Podètz utilizar de balisas HTML - title: Politica de confidencialitat del site site_title: Títol del servidor thumbnail: desc_html: Servís pels apercebuts via OpenGraph e las API. Talha de 1200x630px recomandada @@ -1014,8 +1009,6 @@ oc: sensitive_content: Contengut sensible tags: does_not_match_previous_name: correspond pas al nom precedent - terms: - title: Condicions d’utilizacion e politica de confidencialitat de %{instance} themes: contrast: Mastodon (Fòrt contrast) default: Mastodon (Escur) diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 4251f5510..3f53575df 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -41,7 +41,6 @@ pl: other: wpisów status_count_before: Są autorami tagline: Zdecentralizowana sieć społecznościowa - terms: Zasady użytkowania unavailable_content: Niedostępne treści unavailable_content_description: domain: Serwer @@ -824,8 +823,8 @@ pl: desc_html: Wyświetlany na pasku bocznym i w znacznikach meta. Opisz w jednym akapicie, czym jest Mastodon i czym wyróżnia się ten serwer. Jeżeli pusty, zostanie użyty opis serwera. title: Krótki opis serwera site_terms: - desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz korzystać ze znaczników HTML - title: Niestandardowe zasady użytkowania + desc_html: Możesz stworzyć własną politykę prywatności. Możesz używać tagów HTML + title: Własna polityka prywatności site_title: Nazwa serwera thumbnail: desc_html: 'Używana w podglądzie przez OpenGraph i API. Zalecany rozmiar: 1200x630 pikseli' @@ -1766,7 +1765,7 @@ pl:

Ten dokument jest CC-BY-SA. Data ostatniej aktualizacji: 26 maja 2022.

Oryginalnie zaadaptowany z Discourse privacy policy.

- title: Zasady korzystania i polityka prywatności %{instance} + title: Polityka prywatności %{instance} themes: contrast: Mastodon (Wysoki kontrast) default: Mastodon (Ciemny) diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 9460d651f..b6da1a3ff 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -28,7 +28,6 @@ pt-BR: learn_more: Saiba mais logged_in_as_html: Você está atualmente logado como %{username}. logout_before_registering: Já está logado. - privacy_policy: Política de Privacidade rules: Regras do servidor rules_html: 'Abaixo está um resumo das regras que você precisa seguir se você quer ter uma conta neste servidor do Mastodon:' see_whats_happening: Veja o que está acontecendo @@ -39,7 +38,6 @@ pt-BR: other: toots status_count_before: Autores de tagline: Rede social descentralizada - terms: Termos de serviço unavailable_content: Conteúdo indisponível unavailable_content_description: domain: Instância @@ -771,9 +769,6 @@ pt-BR: site_short_description: desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que é o Mastodon e o que torna esta instância especial num único parágrafo. Se deixada em branco, é substituído pela descrição da instância. title: Descrição curta da instância - site_terms: - desc_html: Você pode escrever a sua própria Política de Privacidade, Termos de Serviço, entre outras coisas. Você pode usar tags HTML - title: Termos de serviço personalizados site_title: Nome da instância thumbnail: desc_html: Usada para prévias via OpenGraph e API. Recomenda-se 1200x630px @@ -1520,8 +1515,6 @@ pt-BR: sensitive_content: Conteúdo sensível tags: does_not_match_previous_name: não corresponde ao nome anterior - terms: - title: Termos de Serviço e Política de Privacidade de %{instance} themes: contrast: Mastodon (Alto contraste) default: Mastodon (Noturno) diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index fd151b73a..dc518a2f6 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -28,7 +28,6 @@ pt-PT: learn_more: Saber mais logged_in_as_html: Está de momento ligado como %{username}. logout_before_registering: Já tem sessão iniciada. - privacy_policy: Política de privacidade rules: Regras da instância rules_html: 'Abaixo está um resumo das regras que precisa seguir se pretender ter uma conta nesta instância do Mastodon:' see_whats_happening: Veja o que está a acontecer @@ -39,7 +38,6 @@ pt-PT: other: publicações status_count_before: Que fizeram tagline: Rede social descentralizada - terms: Termos de serviço unavailable_content: Conteúdo indisponível unavailable_content_description: domain: Instância @@ -796,9 +794,6 @@ pt-PT: site_short_description: desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que o Mastodon é e o que torna esta instância especial num único parágrafo. Se deixada em branco, remete para a descrição da instância. title: Breve descrição da instância - site_terms: - desc_html: Podes escrever a sua própria política de privacidade, termos de serviço, entre outras coisas. Pode utilizar etiquetas HTML - title: Termos de serviço personalizados site_title: Título do site thumbnail: desc_html: Usada para visualizações via OpenGraph e API. Recomenda-se 1200x630px @@ -1719,7 +1714,6 @@ pt-PT:

Este documento é CC-BY-SA. Ele foi actualizado pela última vez em 26 de Maio 2022.

Originalmente adaptado de Discourse privacy policy.

- title: "%{instance} Termos de Serviço e Política de Privacidade" themes: contrast: Mastodon (Elevado contraste) default: Mastodon diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 8ed812e5b..8f7d42fd4 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -25,7 +25,6 @@ ro: Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual. Acesta este folosit în scopuri de federație și nu ar trebui blocat decât dacă doriți să blocați întreaga instanță, în ce caz trebuie să utilizaţi un bloc de domeniu. learn_more: Află mai multe - privacy_policy: Politica de confidenţialitate rules: Regulile serverului rules_html: 'Mai jos este un rezumat al regulilor pe care trebuie să le urmezi dacă vrei să ai un cont pe acest server de Mastodon:' see_whats_happening: Vezi ce se întâmplă @@ -36,7 +35,6 @@ ro: one: stare other: de stări status_count_before: Care au postat - terms: Termeni de serviciu unavailable_content: Conținut indisponibil unavailable_content_description: domain: Server @@ -592,8 +590,6 @@ ro: sensitive_content: Conținut sensibil tags: does_not_match_previous_name: nu se potrivește cu numele anterior - terms: - title: "%{instance} Termeni de utilizare și Politica de confidențialitate" themes: contrast: Mastodon (contrast mare) default: Mastodon (Întunecat) diff --git a/config/locales/ru.yml b/config/locales/ru.yml index b129c8901..4d5c6dfe8 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -41,7 +41,6 @@ ru: other: поста status_count_before: И опубликовано tagline: Децентрализованная социальная сеть - terms: Условия использования unavailable_content: Недоступный контент unavailable_content_description: domain: Сервер @@ -779,8 +778,8 @@ ru: desc_html: Отображается в боковой панели и в тегах. Опишите, что такое Mastodon и что делает именно этот узел особенным. Если пусто, используется описание узла по умолчанию. title: Краткое описание узла site_terms: - desc_html: Вы можете добавить сюда собственную политику конфиденциальности, пользовательское соглашение и другие документы. Можно использовать теги HTML - title: Условия использования + desc_html: Вы можете написать собственную политику конфиденциальности. Вы можете использовать теги HTML + title: Собственная политика конфиденциальности site_title: Название сайта thumbnail: desc_html: Используется для предпросмотра с помощью OpenGraph и API. Рекомендуется разрешение 1200x630px @@ -1605,7 +1604,7 @@ ru: tags: does_not_match_previous_name: не совпадает с предыдущим именем terms: - title: Условия обслуживания и политика конфиденциальности %{instance} + title: Политика конфиденциальности %{instance} themes: contrast: Mastodon (высококонтрастная) default: Mastodon (тёмная) diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 60dcbbc9e..a031b27ad 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -25,7 +25,6 @@ sc: ' learn_more: Àteras informatziones - privacy_policy: Polìtica de riservadesa rules: Règulas de su serbidore rules_html: 'Depes sighire is règulas imbenientes si boles tènnere unu contu in custu serbidore de Mastodon:' see_whats_happening: Càstia su chi est acontessende @@ -35,7 +34,6 @@ sc: one: istadu other: istados status_count_before: Atributzione de - terms: Cunditziones de su servìtziu unavailable_content: Serbidores moderados unavailable_content_description: domain: Serbidore @@ -558,9 +556,6 @@ sc: site_short_description: desc_html: Ammustradu in sa barra laterale e in is meta-etichetas. Descrie ite est Mastodon e pro ite custu serbidore est ispetziale in unu paràgrafu. title: Descritzione curtza de su serbidore - site_terms: - desc_html: Podes iscrìere sa normativa de riservadesa tua, cunditziones de servìtziu e àteras normas legales. Podes impreare etichetas HTML - title: Cunditziones de su servìtziu personalizadas site_title: Nòmine de su serbidore thumbnail: desc_html: Impreadu pro otènnere pre-visualizatziones pro mèdiu de OpenGraph e API. Cussigiadu 1200x630px @@ -1141,8 +1136,6 @@ sc: sensitive_content: Cuntenutu sensìbile tags: does_not_match_previous_name: non cointzidet cun su nòmine anteriore - terms: - title: "%{instance} Cunditziones de su servìtziu e polìtica de riservadesa" themes: contrast: Mastodon (cuntrastu artu) default: Mastodon (iscuru) diff --git a/config/locales/si.yml b/config/locales/si.yml index 40909ab12..1806801eb 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -28,7 +28,6 @@ si: learn_more: තව දැනගන්න logged_in_as_html: ඔබ දැනට %{username}ලෙස පුරනය වී ඇත. logout_before_registering: ඔබ දැනටමත් පුරනය වී ඇත. - privacy_policy: රහස්‍යතා ප්‍රතිපත්තිය rules: සේවාදායකයේ නීති rules_html: 'ඔබට Mastodon හි මෙම සේවාදායකයේ ගිණුමක් ඇති කර ගැනීමට අවශ්‍ය නම් ඔබ අනුගමනය කළ යුතු නීති වල සාරාංශයක් පහත දැක්වේ:' see_whats_happening: මොකද වෙන්නේ කියලා බලන්න @@ -39,7 +38,6 @@ si: other: තත්ත්වයන් status_count_before: කවුද පළ කළේ tagline: විමධ්‍යගත සමාජ ජාලය - terms: සේවාවේ නියම unavailable_content: මධ්‍යස්ථ සේවාදායකයන් unavailable_content_description: domain: සේවාදායකය @@ -711,9 +709,6 @@ si: site_short_description: desc_html: පැති තීරුවේ සහ මෙටා ටැග්වල පෙන්වයි. Mastodon යනු කුමක්ද සහ මෙම සේවාදායකය විශේෂ වන්නේ කුමක්ද යන්න තනි ඡේදයකින් විස්තර කරන්න. title: සේවාදායකයේ කෙටි සවිස්තරය - site_terms: - desc_html: ඔබට ඔබේම රහස්‍යතා ප්‍රතිපත්තියක්, සේවා කොන්දේසි හෝ වෙනත් නීත්‍යානුකූල භාවයක් ලිවිය හැක. ඔබට HTML ටැග් භාවිතා කළ හැකිය - title: අභිරුචි සේවා කොන්දේසි site_title: සේවාදායකයේ නම thumbnail: desc_html: OpenGraph සහ API හරහා පෙරදසුන් සඳහා භාවිතා වේ. 1200x630px නිර්දේශිතයි @@ -1514,8 +1509,6 @@ si: too_late: මෙම වර්ජනයට අභියාචනයක් ඉදිරිපත් කිරීමට ප්‍රමාද වැඩියි tags: does_not_match_previous_name: පෙර නමට නොගැලපේ - terms: - title: "%{instance} සේවා නියම සහ රහස්‍යතා ප්‍රතිපත්තිය" themes: contrast: Mastodon (ඉහළ වෙනස) default: මැස්ටෝඩන් (අඳුරු) diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index bd7039399..e90d9a093 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -101,7 +101,9 @@ cs: user_role: color: Barva, která má být použita pro roli v celém UI, jako RGB v hex formátu highlighted: Toto roli učiní veřejně viditelnou + name: Veřejný název role, pokud má být role zobrazena jako odznak permissions_as_keys: Uživatelé s touto rolí budou moci... + position: Vyšší role rozhoduje o řešení konfliktů v určitých situacích. Některé akce lze provádět pouze na rolích s nižší prioritou webhook: events: Zvolte odesílané události url: Kam budou události odesílány diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 4ed611b18..6c12a07f4 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -27,7 +27,6 @@ sk: learn_more: Zisti viac logged_in_as_html: Práve si prihlásený/á ako %{username}. logout_before_registering: Už si prihlásený/á. - privacy_policy: Zásady súkromia rules: Serverové pravidlá see_whats_happening: Pozoruj, čo sa deje server_stats: 'Serverové štatistiky:' @@ -39,7 +38,6 @@ sk: other: príspevky status_count_before: Ktorí napísali tagline: Decentralizovaná sociálna sieť - terms: Podmienky užitia unavailable_content: Nedostupný obsah unavailable_content_description: reason: 'Dôvod:' @@ -563,9 +561,6 @@ sk: site_short_description: desc_html: Zobrazené na bočnom paneli a pri meta tagoch. Popíš čo je Mastodon, a čo robí tento server iným, v jednom paragrafe. Pokiaľ toto necháš prázdne, bude tu zobrazený základný popis servera. title: Krátky popis serveru - site_terms: - desc_html: Môžeš si napísať svoje vlastné pravidla o súkromí, prevádzke, alebo aj iné legality. Môžeš tu používať HTML kód - title: Vlastné pravidlá prevádzky site_title: Názov servera thumbnail: desc_html: Používané pre náhľady cez OpenGraph a API. Doporučuje sa rozlišenie 1200x630px @@ -1104,8 +1099,6 @@ sk: sensitive_content: Senzitívny obsah tags: does_not_match_previous_name: nezhoduje sa s predošlým názvom - terms: - title: Podmienky užívania, a pravidlá súkromia pre %{instance} themes: contrast: Mastodon (vysoký kontrast) default: Mastodon (tmavý) diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 1b1aa1b6a..2c1f11afa 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -41,7 +41,6 @@ sl: two: stanja status_count_before: Ki so avtorji tagline: Decentralizirano družbeno omrežje - terms: Pogoji storitve unavailable_content: Moderirani strežniki unavailable_content_description: domain: Strežnik @@ -829,8 +828,8 @@ sl: desc_html: Prikazano v stranski vrstici in metaoznakah. V enem odstavku opišite, kaj je Mastodon in kaj naredi ta strežnik poseben. title: Kratek opis strežnika site_terms: - desc_html: Lahko napišete svojo pravilnik o zasebnosti, pogoje storitve ali druge pravne dokumente. Lahko uporabite oznake HTML - title: Pogoji storitve po meri + desc_html: Napišete lahko svoj pravilnik o zasebnosti. Uporabite lahko značke HTML. + title: Pravilnik o zasebnosti po meri site_title: Ime strežnika thumbnail: desc_html: Uporablja se za predogled prek OpenGrapha in API-ja. Priporočamo 1200x630px @@ -1787,7 +1786,7 @@ sl:

Ta dokument je CC-BY-SA. Zadnja posodobitev je bila 7. marca 2018.

Prvotno je bila prilagojena v skladu s politiko zasebnost Discourse.

- title: "%{instance} Pogoji storitve in pravilnik o zasebnosti" + title: Pravilnik o zasebnosti %{instance} themes: contrast: Mastodon (Visok kontrast) default: Mastodon (Temna) diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 3beca5f53..e90449495 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -28,7 +28,7 @@ sq: learn_more: Mësoni më tepër logged_in_as_html: Aktualisht jeni i futur si %{username}. logout_before_registering: Jeni i futur tashmë. - privacy_policy: Rregulla privatësie + privacy_policy: Rregulla Privatësie rules: Rregulla shërbyesi rules_html: 'Më poshtë keni një përmbledhje të rregullave që duhet të ndiqni, nëse doni të keni një llogari në këtë shërbyes Mastodon:' see_whats_happening: Shihni ç'ndodh @@ -39,7 +39,6 @@ sq: other: mesazhe status_count_before: Që kanë krijuar tagline: Rrjet shoqëror i decentralizuar - terms: Kushte shërbimi unavailable_content: Shërbyes të moderuar unavailable_content_description: domain: Shërbyes @@ -794,8 +793,8 @@ sq: desc_html: E shfaqur në anështyllë dhe etiketa meta. Përshkruani në një paragraf të vetëm ç’është Mastodon-i dhe ç’e bën special këtë shërbyes. Në u lëntë i zbrazët, për shërbyesin do të përdoret përshkrimi parazgjedhje. title: Përshkrim i shkurtër shërbyesi site_terms: - desc_html: Mund të shkruani rregullat tuaja të privatësisë, kushtet e shërbimit ose gjëra të tjera ligjore. Mund të përdorni etiketa HTML - title: Kushte vetjake shërbimi + desc_html: Mund të shkruani rregullat tuaja të privatësisë. Mundeni të përdorni etiketa HTML + title: Rregulla vetjake privatësie site_title: Emër shërbyesi thumbnail: desc_html: I përdorur për paraparje përmes OpenGraph-it dhe API-t. Këshillohet 1200x630px @@ -1713,7 +1712,7 @@ sq:

Ky dokument licencohet sipas CC-BY-SA. Qe përditësuar së fundi më 26 maj 2022.

Përshtatur fillimisht prej rregulave të privatësisë së Discourse-it.

- title: Kushte Shërbimi dhe Rregulla Privatësie te %{instance} + title: Rregulla Privatësie të %{instance} themes: contrast: Mastodon (Me shumë kontrast) default: Mastodon (I errët) diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 692db061a..0596d4b68 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -179,9 +179,6 @@ sr-Latn: site_description_extended: desc_html: Dobro mesto za vaš kod ponašanja, pravila, smernice i druge stvari po kojima se Vaša instanca razlikuje. Možete koristiti HTML tagove title: Proizvoljne dodatne informacije - site_terms: - desc_html: Možete pisati Vašu politiku privatnosti, uslove korišćenja i ostale legalne stvari. Možete koristiti HTML tagove - title: Proizvoljni uslovi korišćenja site_title: Ime instance thumbnail: desc_html: Koristi se za preglede kroz OpenGraph i API. Preporučuje se 1200x630px @@ -396,8 +393,6 @@ sr-Latn: pinned: Prikačeni tut reblogged: podržano sensitive_content: Osetljiv sadržaj - terms: - title: Uslovi korišćenja i politika privatnosti instance %{instance} themes: default: Mastodont two_factor_authentication: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index e6cbb26d2..fb2c86cff 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -12,14 +12,12 @@ sr: documentation: Документација hosted_on: Мастодонт хостован на %{domain} learn_more: Сазнајте више - privacy_policy: Полиса приватности source_code: Изворни код status_count_after: few: статуси one: статус other: статуса status_count_before: Који су написали - terms: Услови коришћења user_count_after: few: корисници one: корисник @@ -314,9 +312,6 @@ sr: site_short_description: desc_html: Приказано у изборнику са стране и у мета ознакама. Опиши шта је Мастодон и шта чини овај сервер посебним у једном пасусу. Ако остане празно, вратиће се првобитни опис инстанце. title: Кратак опис инстанце - site_terms: - desc_html: Можете писати Вашу политику приватности, услове коришћења и остале легалне ствари. Можете користити HTML тагове - title: Произвољни услови коришћења site_title: Име инстанце thumbnail: desc_html: Користи се за прегледе кроз OpenGraph и API. Препоручује се 1200x630px @@ -642,8 +637,6 @@ sr: pinned: Прикачена труба reblogged: подржано sensitive_content: Осетљив садржај - terms: - title: Услови коришћења и политика приватности инстанце %{instance} themes: contrast: Велики контраст default: Мастодон diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 77a44b75d..6ea6bbfb7 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -26,7 +26,6 @@ sv: learn_more: Lär dig mer logged_in_as_html: Inloggad som %{username}. logout_before_registering: Du är redan inloggad. - privacy_policy: Integritetspolicy rules: Serverns regler rules_html: 'Nedan en sammanfattning av kontoreglerna för denna Mastodonserver:' see_whats_happening: Se vad som händer @@ -36,7 +35,6 @@ sv: one: status other: statusar status_count_before: Som skapat - terms: Användarvillkor unavailable_content: Otillgängligt innehåll unavailable_content_description: domain: Server @@ -574,9 +572,6 @@ sv: title: Egentillverkad utökad information site_short_description: title: Kort beskrivning av servern - site_terms: - desc_html: Du kan skriva din egen integritetspolicy, användarvillkor eller andra regler. Du kan använda HTML-taggar - title: Egentillverkad villkor för tjänster site_title: Namn på instans thumbnail: desc_html: Används för förhandsgranskningar via OpenGraph och API. 1200x630px rekommenderas @@ -1155,8 +1150,6 @@ sv: too_late: Det är för sent att överklaga denna strejk tags: does_not_match_previous_name: matchar inte det föregående namnet - terms: - title: "%{instance} Användarvillkor och Sekretesspolicy" themes: contrast: Hög kontrast default: Mastodon diff --git a/config/locales/ta.yml b/config/locales/ta.yml index d2b753cf3..ea1788302 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -20,7 +20,6 @@ ta: get_apps: கைப்பேசி செயலியை முயற்சி செய்யவும் hosted_on: மாஸ்டோடாண் %{domain} இனையத்தில் இயங்குகிறது learn_more: மேலும் அறிய - privacy_policy: தனியுரிமை கொள்கை see_whats_happening: என்ன நடக்கிறது என்று பார்க்க server_stats: 'வழங்கியின் புள்ளிவிவரங்கள்:' source_code: நிரல் மூலம் @@ -28,7 +27,6 @@ ta: one: பதிவு other: பதிவுகள் status_count_before: எழுதிய - terms: சேவை விதிமுறைகள் unavailable_content: விசயங்கள் இல்லை unavailable_content_description: domain: வழங்கி diff --git a/config/locales/te.yml b/config/locales/te.yml index fe39bb752..3f0c80980 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -12,13 +12,11 @@ te: documentation: పత్రీకరణ hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది learn_more: మరింత తెలుసుకోండి - privacy_policy: గోప్యత విధానము source_code: సోర్సు కోడ్ status_count_after: one: స్థితి other: స్థితులు status_count_before: ఎవరు రాశారు - terms: సేవా నిబంధనలు user_count_after: one: వినియోగదారు other: వినియోగదారులు diff --git a/config/locales/th.yml b/config/locales/th.yml index be3c24482..dd04aefa1 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -28,7 +28,6 @@ th: learn_more: เรียนรู้เพิ่มเติม logged_in_as_html: คุณกำลังเข้าสู่ระบบเป็น %{username} ในปัจจุบัน logout_before_registering: คุณได้เข้าสู่ระบบอยู่แล้ว - privacy_policy: นโยบายความเป็นส่วนตัว rules: กฎของเซิร์ฟเวอร์ rules_html: 'ด้านล่างคือข้อมูลสรุปของกฎที่คุณจำเป็นต้องปฏิบัติตามหากคุณต้องการมีบัญชีในเซิร์ฟเวอร์ Mastodon นี้:' see_whats_happening: ดูสิ่งที่กำลังเกิดขึ้น @@ -38,7 +37,6 @@ th: other: โพสต์ status_count_before: ผู้เผยแพร่ tagline: เครือข่ายสังคมแบบกระจายศูนย์ - terms: เงื่อนไขการให้บริการ unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม unavailable_content_description: domain: เซิร์ฟเวอร์ @@ -768,9 +766,6 @@ th: site_short_description: desc_html: แสดงในแถบข้างและแท็กเมตา อธิบายว่า Mastodon คืออะไรและสิ่งที่ทำให้เซิร์ฟเวอร์นี้พิเศษในย่อหน้าเดียว title: คำอธิบายเซิร์ฟเวอร์แบบสั้น - site_terms: - desc_html: คุณสามารถเขียนนโยบายความเป็นส่วนตัว, เงื่อนไขการให้บริการ หรือภาษากฎหมายอื่น ๆ ของคุณเอง คุณสามารถใช้แท็ก HTML - title: เงื่อนไขการให้บริการที่กำหนดเอง site_title: ชื่อเซิร์ฟเวอร์ thumbnail: desc_html: ใช้สำหรับการแสดงตัวอย่างผ่าน OpenGraph และ API 1200x630px ที่แนะนำ @@ -1536,8 +1531,6 @@ th: sensitive_content: เนื้อหาที่ละเอียดอ่อน tags: does_not_match_previous_name: ไม่ตรงกับชื่อก่อนหน้านี้ - terms: - title: เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวของ %{instance} themes: contrast: Mastodon (ความคมชัดสูง) default: Mastodon (มืด) diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 82a00b7fc..74fbf4be2 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -28,7 +28,7 @@ tr: learn_more: Daha fazla bilgi edinin logged_in_as_html: Şu an %{username} olarak oturum açmışsınız. logout_before_registering: Zaten oturumunuz açık. - privacy_policy: Gizlilik politikası + privacy_policy: Gizlilik Politikası rules: Sunucu kuralları rules_html: 'Aşağıda, bu Mastodon sunucusu üzerinde bir hesap açmak istiyorsanız uymanız gereken kuralların bir özeti var:' see_whats_happening: Neler olduğunu görün @@ -39,7 +39,6 @@ tr: other: durum yazıldı status_count_before: Şu ana kadar tagline: Merkezi olmayan sosyal ağ - terms: Kullanım şartları unavailable_content: Denetlenen sunucular unavailable_content_description: domain: Sunucu @@ -797,8 +796,8 @@ tr: desc_html: Kenar çubuğunda ve meta etiketlerinde görüntülenir. Mastodon'un ne olduğunu ve bu sunucuyu özel kılan şeyleri tek bir paragrafta açıklayın. title: Kısa sunucu açıklaması site_terms: - desc_html: Kendi gizlilik politikanızı, hizmet şartlarınızı ya da diğer hukuki metinlerinizi yazabilirsiniz. HTML etiketleri kullanabilirsiniz - title: Özel hizmet şartları + desc_html: Kendi gizlilik politikanızı yazabilirsiniz. HTML etiketlerini kullanabilirsiniz + title: Özel gizlilik politikası site_title: Site başlığı thumbnail: desc_html: OpenGraph ve API ile ön izlemeler için kullanılır. 1200x630px tavsiye edilir @@ -1718,7 +1717,7 @@ tr:

Bu belge CC-BY-SA altında lisanslanmıştır. En son 26 Mayıs 2022 tarihinde güncellenmiştir.

Discourse gizlilik politikasından uyarlanmıştır.

- title: "%{instance} Hizmet Şartları ve Gizlilik Politikası" + title: "%{instance} Gizlilik Politikası" themes: contrast: Mastodon (Yüksek karşıtlık) default: Mastodon (Karanlık) diff --git a/config/locales/tt.yml b/config/locales/tt.yml index a520e4d2b..f762424e5 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -4,7 +4,6 @@ tt: about_this: Хакында api: API contact_unavailable: Юк - privacy_policy: Хосусыйлык сәясәте unavailable_content_description: domain: Сервер user_count_after: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 58abba1bd..6d411bf8d 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -26,7 +26,7 @@ uk: learn_more: Дізнатися більше logged_in_as_html: Зараз ви увійшли як %{username}. logout_before_registering: Ви вже увійшли. - privacy_policy: Політика приватності + privacy_policy: Політика конфіденційності rules: Правила сервера rules_html: 'Внизу наведено підсумок правил, яких ви повинні дотримуватися, якщо хочете мати обліковий запис на цьому сервері Mastodon:' see_whats_happening: Погляньте, що відбувається @@ -39,7 +39,6 @@ uk: other: статуси status_count_before: Опубліковано tagline: Децентралізована соціальна мережа - terms: Правила використання unavailable_content: Недоступний вміст unavailable_content_description: domain: Сервер @@ -822,10 +821,8 @@ uk: desc_html: Відображається в бічній панелі та мета-тегах. Опишіть, що таке Mastodon і що робить цей сервер особливим, в одному абзаці. title: Короткий опис сервера site_terms: - desc_html: |- - Ви можене написати власну політику приватності, умови використанні та інші законні штуки
- Можете використовувати HTML теги - title: Особливі умови використання + desc_html: Ви можете писати власну політику конфіденційності самостійно. Ви можете використовувати HTML-теги + title: Особлива політика конфіденційності site_title: Назва сайту thumbnail: desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів @@ -1701,7 +1698,7 @@ uk: tags: does_not_match_previous_name: не збігається з попереднім ім'ям terms: - title: Умови використання та Політика приватності %{instance} + title: "%{instance} Політика конфіденційності" themes: contrast: Висока контрасність default: Mastodon diff --git a/config/locales/vi.yml b/config/locales/vi.yml index f5fe23795..1e4b9e0b8 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -36,7 +36,6 @@ vi: other: tút status_count_before: Nơi lưu giữ tagline: Mạng xã hội liên hợp - terms: Điều khoản dịch vụ unavailable_content: Giới hạn chung unavailable_content_description: domain: Máy chủ @@ -779,8 +778,8 @@ vi: desc_html: Hiển thị trong thanh bên và thẻ meta. Mô tả Mastodon là gì và điều gì làm cho máy chủ này trở nên đặc biệt trong một đoạn văn duy nhất. title: Mô tả máy chủ ngắn site_terms: - desc_html: Bạn có thể viết điều khoản dịch vụ, quyền riêng tư hoặc các vấn đề pháp lý khác. Dùng thẻ HTML - title: Điều khoản dịch vụ tùy chỉnh + desc_html: Bạn có thể tự soạn chính sách bảo mật của riêng bạn. Sử dụng HTML + title: Sửa chính sách bảo mật site_title: Tên máy chủ thumbnail: desc_html: Bản xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px @@ -1649,7 +1648,7 @@ vi:

Nếu có thay đổi chính sách bảo mật, chúng tôi sẽ đăng những thay đổi đó ở mục này.

Tài liệu này phát hành dưới giấy phép CC-BY-SA và được cập nhật lần cuối vào ngày 26 tháng 5 năm 2022.

Chỉnh sửa và hoàn thiện từ Discourse.

- title: Quy tắc của %{instance} + title: Chính sách bảo mật %{instance} themes: contrast: Mastodon (Độ tương phản cao) default: Mastodon (Tối) diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index ceffecd27..e0f968db8 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -38,7 +38,6 @@ zh-CN: other: 条嘟文 status_count_before: 他们共嘟出了 tagline: 分布式社交网络 - terms: 使用条款 unavailable_content: 被限制的服务器 unavailable_content_description: domain: 服务器 @@ -781,8 +780,8 @@ zh-CN: desc_html: 会在在侧栏和元数据标签中显示。可以用一小段话描述 Mastodon 是什么,以及本服务器的特点。 title: 服务器一句话介绍 site_terms: - desc_html: 可以填写自己的隐私权政策、使用条款或其他法律文本。可以使用 HTML 标签 - title: 自定义使用条款 + desc_html: 您可以写自己的隐私政策。您可以使用 HTML 标签 + title: 自定义隐私政策 site_title: 本站名称 thumbnail: desc_html: 用于在 OpenGraph 和 API 中显示预览图。推荐分辨率 1200×630px @@ -1685,7 +1684,7 @@ zh-CN:

此文件以 CC-BY-SA 授权。最后更新时间为 2022 年 5 月 26 日。

最初改编自 Discourse 隐私政策.

- title: "%{instance} 使用条款和隐私权政策" + title: "%{instance} 的隐私政策" themes: contrast: Mastodon(高对比度) default: Mastodon(暗色主题) diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 39dfc9356..8696b40d2 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -25,7 +25,6 @@ zh-HK: 這個帳戶是代表伺服器,而非代表任何個人用戶的虛擬帳號。 此帳戶是為聯盟協定而設。除非你想封鎖整個伺服器的話,否則請不要封鎖這個帳戶。如果你想封鎖伺服器,請使用網域封鎖以達到相同效果。 learn_more: 了解更多 - privacy_policy: 隱私權政策 rules: 系統規則 rules_html: 如果你想要在本站開一個新帳戶,以下是你需要遵守的規則: see_whats_happening: 看看發生什麼事 @@ -34,7 +33,6 @@ zh-HK: status_count_after: other: 篇文章 status_count_before: 共發佈了 - terms: 使用條款 unavailable_content: 受限制的伺服器 unavailable_content_description: domain: 伺服器 @@ -578,9 +576,6 @@ zh-HK: site_short_description: desc_html: "顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫𩓙而出。" title: 伺服器短描述 - site_terms: - desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤 - title: 自訂使用條款 site_title: 本站名稱 thumbnail: desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px @@ -1191,8 +1186,6 @@ zh-HK: sensitive_content: 敏感內容 tags: does_not_match_previous_name: 和舊有名稱並不符合 - terms: - title: "%{instance} 使用條款和隱私權政策" themes: contrast: 高對比 default: 萬象 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index c59df907a..29af27c66 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -38,7 +38,6 @@ zh-TW: other: 條嘟文 status_count_before: 他們共嘟出了 tagline: 去中心化社群網路 - terms: 使用條款 unavailable_content: 無法取得的內容 unavailable_content_description: domain: 伺服器 @@ -783,8 +782,8 @@ zh-TW: desc_html: 顯示在側邊欄和網頁標籤 (meta tags)。以一段話描述 Mastodon 是甚麼,以及這個伺服器的特色。 title: 伺服器短描述 site_terms: - desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤 - title: 自訂使用條款 + desc_html: 您可以撰寫自己的隱私權政策。您可以使用 HTML 標籤。 + title: 客製的隱私權政策 site_title: 伺服器名稱 thumbnail: desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px @@ -1690,7 +1689,7 @@ zh-TW:

此文件以 CC-BY-SA 授權。最後更新時間為 2022 年 5 月 26 日。

最初改編自 Discourse 隱私權政策.

- title: "%{instance} 使用條款和隱私權政策" + title: "%{instance} 隱私權政策" themes: contrast: Mastodon(高對比) default: Mastodon(深色) From 5cf056fdb0b16c3d8e093c28c3bcd8e54dc544ae Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 29 Sep 2022 23:36:14 +0900 Subject: [PATCH 205/280] Install python3 when building with Docker (#18072) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 42869d5de..cf311fef2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ RUN ARCH= && \ esac && \ echo "Etc/UTC" > /etc/localtime && \ apt-get update && \ - apt-get install -y --no-install-recommends ca-certificates wget python apt-utils && \ + apt-get install -y --no-install-recommends ca-certificates wget python3 apt-utils && \ cd ~ && \ wget -q https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-$ARCH.tar.gz && \ tar xf node-v$NODE_VER-linux-$ARCH.tar.gz && \ From c55219efa811b3c6347774bec1b174d325e5f300 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 30 Sep 2022 01:14:37 +0200 Subject: [PATCH 206/280] Remove volume number from hashtags in web UI (#19253) --- app/javascript/mastodon/components/hashtag.js | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.js index 4e9cd3569..4a5a4bb57 100644 --- a/app/javascript/mastodon/components/hashtag.js +++ b/app/javascript/mastodon/components/hashtag.js @@ -1,7 +1,7 @@ // @ts-check import React from 'react'; import { Sparklines, SparklinesCurve } from 'react-sparklines'; -import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; +import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import Permalink from './permalink'; @@ -9,10 +9,6 @@ import ShortNumber from 'mastodon/components/short_number'; import Skeleton from 'mastodon/components/skeleton'; import classNames from 'classnames'; -const messages = defineMessages({ - totalVolume: { id: 'hashtag.total_volume', defaultMessage: 'Total volume in the last {days, plural, one {day} other {{days} days}}' }, -}); - class SilentErrorBoundary extends React.Component { static propTypes = { @@ -69,7 +65,7 @@ ImmutableHashtag.propTypes = { hashtag: ImmutablePropTypes.map.isRequired, }; -const Hashtag = injectIntl(({ name, href, to, people, uses, history, className, intl }) => ( +const Hashtag = ({ name, href, to, people, history, className }) => (
@@ -79,11 +75,6 @@ const Hashtag = injectIntl(({ name, href, to, people, uses, history, className, {typeof people !== 'undefined' ? : }
- - {typeof uses !== 'undefined' ? : } - * - -
0)}> @@ -92,7 +83,7 @@ const Hashtag = injectIntl(({ name, href, to, people, uses, history, className,
-)); +); Hashtag.propTypes = { name: PropTypes.string, From 4500504ec2be89bdedaef27bbf1cf82f77483ccd Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 2 Oct 2022 18:10:49 +0200 Subject: [PATCH 207/280] Revert "Change search API to be accessible without being logged in (#18963)" This reverts commit c57907737a35d05d4bb936acd662df6ce725456f. --- app/controllers/api/v2/search_controller.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index d14cd5627..77eeab5b0 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -5,7 +5,8 @@ class Api::V2::SearchController < Api::BaseController RESULTS_LIMIT = (ENV['MAX_SEARCH_RESULTS'] || 20).to_i - before_action -> { authorize_if_got_token! :read, :'read:search' } + before_action -> { doorkeeper_authorize! :read, :'read:search' } + before_action :require_user! def index @search = Search.new(search_results) @@ -23,7 +24,7 @@ class Api::V2::SearchController < Api::BaseController params[:q], current_account, limit_param(RESULTS_LIMIT), - search_params.merge(resolve: user_signed_in? ? truthy_param?(:resolve) : false, exclude_unreviewed: truthy_param?(:exclude_unreviewed)) + search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed)) ) end From bfc539cfb4f040fcffac740b36791c26c2a74119 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 2 Oct 2022 18:11:46 +0200 Subject: [PATCH 208/280] Revert "Change "Allow trends without prior review" setting to include statuses (#17977)" This reverts commit 546672e292dc3218e996048464c4c52e5d00f766. --- app/javascript/styles/mastodon/accounts.scss | 9 +-------- app/javascript/styles/mastodon/forms.scss | 3 +-- app/models/account.rb | 4 ---- app/views/admin/settings/edit.html.haml | 2 +- config/i18n-tasks.yml | 2 +- config/initializers/simple_form.rb | 5 +---- config/locales/en.yml | 4 ++-- config/locales/simple_form.en.yml | 1 - 8 files changed, 7 insertions(+), 23 deletions(-) diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index c007eb4b5..54b65bfc8 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -202,8 +202,7 @@ } .account-role, -.simple_form .recommended, -.simple_form .not_recommended { +.simple_form .recommended { display: inline-block; padding: 4px 6px; cursor: default; @@ -228,12 +227,6 @@ } } -.simple_form .not_recommended { - color: lighten($error-red, 12%); - background-color: rgba(lighten($error-red, 12%), 0.1); - border-color: rgba(lighten($error-red, 12%), 0.5); -} - .account__header__fields { max-width: 100vw; padding: 0; diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index a6419821f..990903859 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -102,8 +102,7 @@ code { } } - .recommended, - .not_recommended { + .recommended { position: absolute; margin: 0 4px; margin-top: -2px; diff --git a/app/models/account.rb b/app/models/account.rb index 33870beda..f75750838 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -262,10 +262,6 @@ class Account < ApplicationRecord update!(memorial: true) end - def trendable - boolean_with_default('trendable', Setting.trendable_by_default) - end - def sign? true end diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index c8ebb3360..f2fdab90d 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -81,7 +81,7 @@ = f.input :trends, as: :boolean, wrapper: :with_label, label: t('admin.settings.trends.title'), hint: t('admin.settings.trends.desc_html') .fields-group - = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html'), recommended: :not_recommended + = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html') .fields-group = f.input :trending_status_cw, as: :boolean, wrapper: :with_label, label: t('admin.settings.trending_status_cw.title'), hint: t('admin.settings.trending_status_cw.desc_html') diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index cc607f72a..7139bcea7 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -51,7 +51,7 @@ ignore_unused: - 'activerecord.errors.*' - '{devise,pagination,doorkeeper}.*' - '{date,datetime,time,number}.*' - - 'simple_form.{yes,no,recommended,not_recommended}' + - 'simple_form.{yes,no,recommended}' - 'simple_form.{placeholders,hints,labels}.*' - 'simple_form.{error_notification,required}.:' - 'errors.messages.*' diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb index 92cffc5a2..3a2097d2f 100644 --- a/config/initializers/simple_form.rb +++ b/config/initializers/simple_form.rb @@ -11,10 +11,7 @@ end module RecommendedComponent def recommended(_wrapper_options = nil) return unless options[:recommended] - - key = options[:recommended].is_a?(Symbol) ? options[:recommended] : :recommended - options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t(key, scope: 'simple_form'), class: key)]) } - + options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.recommended'), class: 'recommended')]) } nil end end diff --git a/config/locales/en.yml b/config/locales/en.yml index dd341e0c8..6f0f3e953 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -807,8 +807,8 @@ en: title: Allow unauthenticated access to public timeline title: Site settings trendable_by_default: - desc_html: Specific trending content can still be explicitly disallowed - title: Allow trends without prior review + desc_html: Affects hashtags that have not been previously disallowed + title: Allow hashtags to trend without prior review trends: desc_html: Publicly display previously reviewed content that is currently trending title: Trends diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index db5b45e41..ec4c445e8 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -261,7 +261,6 @@ en: events: Enabled events url: Endpoint URL 'no': 'No' - not_recommended: Not recommended recommended: Recommended required: mark: "*" From e7ab476db240bb2fa09f975734923e2c6d04c3ee Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 2 Oct 2022 19:03:24 +0200 Subject: [PATCH 209/280] Revert server-side part of "Add logged-out access to the web UI" --- app/lib/permalink_redirector.rb | 4 ++++ app/views/home/index.html.haml | 12 ++++-------- spec/lib/permalink_redirector_spec.rb | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb index 6d15f3963..e48bce060 100644 --- a/app/lib/permalink_redirector.rb +++ b/app/lib/permalink_redirector.rb @@ -17,6 +17,10 @@ class PermalinkRedirector find_status_url_by_id(path_segments[2]) elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/ find_account_url_by_id(path_segments[2]) + elsif path_segments[1] == 'timelines' && path_segments[2] == 'tag' && path_segments[3].present? + find_tag_url_by_name(path_segments[3]) + elsif path_segments[1] == 'tags' && path_segments[2].present? + find_tag_url_by_name(path_segments[2]) end end end diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml index 437c33715..568b23eff 100644 --- a/app/views/home/index.html.haml +++ b/app/views/home/index.html.haml @@ -1,14 +1,10 @@ - content_for :header_tags do - - if user_signed_in? - = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' - - = render partial: 'shared/og' + = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} - = render_initial_state .notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } } diff --git a/spec/lib/permalink_redirector_spec.rb b/spec/lib/permalink_redirector_spec.rb index abda57da4..b916b33b2 100644 --- a/spec/lib/permalink_redirector_spec.rb +++ b/spec/lib/permalink_redirector_spec.rb @@ -21,7 +21,7 @@ describe PermalinkRedirector do it 'returns path for legacy tag links' do redirector = described_class.new('web/timelines/tag/hoge') - expect(redirector.redirect_path).to be_nil + expect(redirector.redirect_path).to eq '/tags/hoge' end it 'returns path for pretty account links' do @@ -36,7 +36,7 @@ describe PermalinkRedirector do it 'returns path for pretty tag links' do redirector = described_class.new('web/tags/hoge') - expect(redirector.redirect_path).to be_nil + expect(redirector.redirect_path).to eq '/tags/hoge' end end end From e18ba67727efc0160dd49348f0e38c106d50d7af Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 2 Oct 2022 18:23:14 +0200 Subject: [PATCH 210/280] [Glitch] Add privacy icons to report modal Port d2f7e30a283a1dca1f7974884ac0c237b93903ad to glitch-soc --- .../glitch/features/report/components/status_check_box.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/report/components/status_check_box.js b/app/javascript/flavours/glitch/features/report/components/status_check_box.js index 76bf0eb85..2231fc0ce 100644 --- a/app/javascript/flavours/glitch/features/report/components/status_check_box.js +++ b/app/javascript/flavours/glitch/features/report/components/status_check_box.js @@ -7,6 +7,7 @@ import DisplayName from 'flavours/glitch/components/display_name'; import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp'; import Option from './option'; import MediaAttachments from 'flavours/glitch/components/media_attachments'; +import VisibilityIcon from 'flavours/glitch/components/status_visibility_icon'; export default class StatusCheckBox extends React.PureComponent { @@ -36,7 +37,7 @@ export default class StatusCheckBox extends React.PureComponent {
-
·
+
·
} /> From d25de7f01ee04498c13a433f6c3044fa50392dc0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 06:22:12 +0200 Subject: [PATCH 211/280] [Glitch] Change path of privacy policy page Port 36f4c32a38ed85e5e658b34d36eac40a6147bc0c to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/ui/components/link_footer.js | 4 ++-- app/javascript/flavours/glitch/util/backend_links.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.js b/app/javascript/flavours/glitch/features/ui/components/link_footer.js index 3abdaad4b..d91f9b8c4 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.js +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; import { limitedFederationMode, version, repository, source_url } from 'flavours/glitch/util/initial_state'; -import { signOutLink, securityLink } from 'flavours/glitch/util/backend_links'; +import { signOutLink, securityLink, privacyPolicyLink } from 'flavours/glitch/util/backend_links'; import { logOut } from 'flavours/glitch/util/log_out'; import { openModal } from 'flavours/glitch/actions/modal'; import { PERMISSION_INVITE_USERS } from 'flavours/glitch/permissions'; @@ -55,7 +55,7 @@ class LinkFooter extends React.PureComponent { {!!securityLink &&
  • ·
  • } {!limitedFederationMode &&
  • ·
  • }
  • ·
  • -
  • ·
  • +
  • ·
  • ·
  • ·
  • diff --git a/app/javascript/flavours/glitch/util/backend_links.js b/app/javascript/flavours/glitch/util/backend_links.js index 5b2dd8dbf..d0ae63419 100644 --- a/app/javascript/flavours/glitch/util/backend_links.js +++ b/app/javascript/flavours/glitch/util/backend_links.js @@ -1,7 +1,7 @@ export const preferencesLink = '/settings/preferences'; export const profileLink = '/settings/profile'; export const signOutLink = '/auth/sign_out'; -export const termsLink = '/terms'; +export const privacyPolicyLink = '/privacy-policy'; export const accountAdminLink = (id) => `/admin/accounts/${id}`; export const statusAdminLink = (account_id, status_id) => `/admin/accounts/${account_id}/statuses?id=${status_id}`; export const filterEditLink = (id) => `/filters/${id}/edit`; From f416e36f0fb68379cbb0cd019c5a8f435f9ab988 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 20 Sep 2022 23:51:21 +0200 Subject: [PATCH 212/280] [Glitch] Add ability to filter followed accounts' posts by language Port 50948b46aabc0756d85bc6641f0bd3bcc09bf7d4 to glitch-soc Signed-off-by: Claire --- .../features/account/components/header.js | 5 + .../account_timeline/components/header.js | 6 + .../containers/header_container.js | 8 +- .../subscribed_languages_modal/index.js | 121 ++++++++++++++++++ .../features/ui/components/modal_root.js | 2 + 5 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 app/javascript/flavours/glitch/features/subscribed_languages_modal/index.js diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js index 53170b7a6..cc2a7d4d4 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.js +++ b/app/javascript/flavours/glitch/features/account/components/header.js @@ -51,6 +51,7 @@ const messages = defineMessages({ add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' }, admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, add_account_note: { id: 'account.add_account_note', defaultMessage: 'Add note for @{name}' }, + languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' }, }); const dateFormatOptions = { @@ -85,6 +86,7 @@ class Header extends ImmutablePureComponent { onEndorseToggle: PropTypes.func.isRequired, onAddToList: PropTypes.func.isRequired, onEditAccountNote: PropTypes.func.isRequired, + onChangeLanguages: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -215,6 +217,9 @@ class Header extends ImmutablePureComponent { } else { menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle }); } + + menu.push({ text: intl.formatMessage(messages.languages), action: this.props.onChangeLanguages }); + menu.push(null); } menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle }); diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/header.js b/app/javascript/flavours/glitch/features/account_timeline/components/header.js index 645ff29ea..783d318f9 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/header.js +++ b/app/javascript/flavours/glitch/features/account_timeline/components/header.js @@ -23,6 +23,7 @@ export default class Header extends ImmutablePureComponent { onUnblockDomain: PropTypes.func.isRequired, onEndorseToggle: PropTypes.func.isRequired, onAddToList: PropTypes.func.isRequired, + onChangeLanguages: PropTypes.func.isRequired, hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -92,6 +93,10 @@ export default class Header extends ImmutablePureComponent { this.props.onEditAccountNote(this.props.account); } + handleChangeLanguages = () => { + this.props.onChangeLanguages(this.props.account); + } + render () { const { account, hidden, hideTabs } = this.props; @@ -118,6 +123,7 @@ export default class Header extends ImmutablePureComponent { onEndorseToggle={this.handleEndorseToggle} onAddToList={this.handleAddToList} onEditAccountNote={this.handleEditAccountNote} + onChangeLanguages={this.handleChangeLanguages} domain={this.props.domain} hidden={hidden} /> diff --git a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js index 3fa7c1448..dc8b2d55a 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js +++ b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js @@ -130,12 +130,18 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(unblockDomain(domain)); }, - onAddToList(account){ + onAddToList (account) { dispatch(openModal('LIST_ADDER', { accountId: account.get('id'), })); }, + onChangeLanguages (account) { + dispatch(openModal('SUBSCRIBED_LANGUAGES', { + accountId: account.get('id'), + })); + }, + }); export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header)); diff --git a/app/javascript/flavours/glitch/features/subscribed_languages_modal/index.js b/app/javascript/flavours/glitch/features/subscribed_languages_modal/index.js new file mode 100644 index 000000000..55404c184 --- /dev/null +++ b/app/javascript/flavours/glitch/features/subscribed_languages_modal/index.js @@ -0,0 +1,121 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import { createSelector } from 'reselect'; +import { is, List as ImmutableList, Set as ImmutableSet } from 'immutable'; +import { languages as preloadedLanguages } from 'flavours/glitch/util/initial_state'; +import Option from 'flavours/glitch/features/report/components/option'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; +import IconButton from 'flavours/glitch/components/icon_button'; +import Button from 'flavours/glitch/components/button'; +import { followAccount } from 'flavours/glitch/actions/accounts'; + +const messages = defineMessages({ + close: { id: 'lightbox.close', defaultMessage: 'Close' }, +}); + +const getAccountLanguages = createSelector([ + (state, accountId) => state.getIn(['timelines', `account:${accountId}`, 'items'], ImmutableList()), + state => state.get('statuses'), +], (statusIds, statuses) => + new ImmutableSet(statusIds.map(statusId => statuses.get(statusId)).filter(status => !status.get('reblog')).map(status => status.get('language')))); + +const mapStateToProps = (state, { accountId }) => ({ + acct: state.getIn(['accounts', accountId, 'acct']), + availableLanguages: getAccountLanguages(state, accountId), + selectedLanguages: ImmutableSet(state.getIn(['relationships', accountId, 'languages']) || ImmutableList()), +}); + +const mapDispatchToProps = (dispatch, { accountId }) => ({ + + onSubmit (languages) { + dispatch(followAccount(accountId, { languages })); + }, + +}); + +export default @connect(mapStateToProps, mapDispatchToProps) +@injectIntl +class SubscribedLanguagesModal extends ImmutablePureComponent { + + static propTypes = { + accountId: PropTypes.string.isRequired, + acct: PropTypes.string.isRequired, + availableLanguages: ImmutablePropTypes.setOf(PropTypes.string), + selectedLanguages: ImmutablePropTypes.setOf(PropTypes.string), + onClose: PropTypes.func.isRequired, + languages: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)), + intl: PropTypes.object.isRequired, + submit: PropTypes.func.isRequired, + }; + + static defaultProps = { + languages: preloadedLanguages, + }; + + state = { + selectedLanguages: this.props.selectedLanguages, + }; + + handleLanguageToggle = (value, checked) => { + const { selectedLanguages } = this.state; + + if (checked) { + this.setState({ selectedLanguages: selectedLanguages.add(value) }); + } else { + this.setState({ selectedLanguages: selectedLanguages.delete(value) }); + } + }; + + handleSubmit = () => { + this.props.onSubmit(this.state.selectedLanguages.toArray()); + this.props.onClose(); + } + + renderItem (value) { + const language = this.props.languages.find(language => language[0] === value); + const checked = this.state.selectedLanguages.includes(value); + + return ( +