diff --git a/.env.production.sample b/.env.production.sample index 6a9a941b30..f7df3b2619 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -78,7 +78,7 @@ OTP_SECRET= # Must be available (and set to same values) for all server processes # These are private/secret values, do not share outside hosting environment # Use `bin/rails db:encryption:init` to generate fresh secrets -# Do not change these secrets once in use, as this would cause data loss and other issues +# Do NOT change these secrets once in use, as this would cause data loss and other issues # ------------------ # ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= # ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2b49bbeb98..f9cbbd8160 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,30 +48,51 @@ You can contribute in the following ways: - Contributing code to Mastodon by fixing bugs or implementing features - Improving the documentation -If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective](https://opencollective.com/mastodon). - Please review the org-level [contribution guidelines] for high-level acceptance criteria guidance and the [DEVELOPMENT] guide for environment-specific details. -[contribution guidelines]: https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md - ## API Changes and Additions -Please note that any changes or additions made to the API should have an accompanying pull request on [our documentation repository](https://github.com/mastodon/documentation). +Any changes or additions made to the API should have an accompanying pull +request on our [documentation repository]. -## Bug reports +## Bug Reports -Bug reports and feature suggestions must use descriptive and concise titles and be submitted to [GitHub Issues](https://github.com/mastodon/mastodon/issues). Please use the search function to make sure that you are not submitting duplicates, and that a similar report or request has not already been resolved or rejected. +Bug reports and feature suggestions must use descriptive and concise titles and +be submitted to [GitHub Issues]. Please use the search function to make sure +there are not duplicate bug reports or feature requests. ## Translations -You can submit translations via [Crowdin](https://crowdin.com/project/mastodon). They are periodically merged into the codebase. +Translations are community contributed via [Crowdin]. They are periodically +reviewed and merged into the codebase. [![Crowdin](https://d322cqt584bo4o.cloudfront.net/mastodon/localized.svg)](https://crowdin.com/project/mastodon) -## Pull requests +## Pull Requests -**Please use clean, concise titles for your pull requests.** Unless the pull request is about refactoring code, updating dependencies or other internal tasks, assume that the person reading the pull request title is not a programmer or Mastodon developer, but instead a Mastodon user or server administrator, and **try to describe your change or fix from their perspective**. We use commit squashing, so the final commit in the main branch will carry the title of the pull request, and commits from the main branch are fed into the changelog. The changelog is separated into [keepachangelog.com categories](https://keepachangelog.com/en/1.0.0/), and while that spec does not prescribe how the entries ought to be named, for easier sorting, start your pull request titles using one of the verbs "Add", "Change", "Deprecate", "Remove", or "Fix" (present tense). +### Size and Scope + +Our time is limited and PRs making large, unsolicited changes are unlikely to +get a response. Changes which link to an existing confirmed issue, or which come +from a "help wanted" issue or other request are more likely to be reviewed. + +The smaller and more narrowly focused the changes in a PR are, the easier they +are to review and potentially merge. If the change only makes sense in some +larger context of future ongoing work, note that in the description, but still +aim to keep each distinct PR to a "smallest viable change" chunk of work. + +### Description of Changes + +Unless the Pull Request is about refactoring code, updating dependencies or +other internal tasks, assume that the audience are not developers, but a +Mastodon user or server admin, and try to describe it from their perspective. + +The final commit in the main branch will carry the title from the PR. The main +branch is then fed into the changelog and ultimately into release notes. We try +to follow the [keepachangelog] spec, and while that does not prescribe how +exactly the entries ought to be named, starting titles using one of the verbs +"Add", "Change", "Deprecate", "Remove", or "Fix" (present tense) is helpful. Example: @@ -79,20 +100,27 @@ Example: | ------------------------------------ | ------------------------------------------------------------- | | Fixed NoMethodError in RemovalWorker | Fix nil error when removing statuses caused by race condition | -It is not always possible to phrase every change in such a manner, but it is desired. +### Technical Requirements -**The smaller the set of changes in the pull request is, the quicker it can be reviewed and merged.** Splitting tasks into multiple smaller pull requests is often preferable. - -**Pull requests that do not pass automated checks may not be reviewed**. In particular, you need to keep in mind: +Pull requests that do not pass automated checks on CI may not be reviewed. In +particular, please keep in mind: - Unit and integration tests (rspec, jest) - Code style rules (rubocop, eslint) - Normalization of locale files (i18n-tasks) +- Relevant accessibility or performance concerns ## Documentation -The [Mastodon documentation](https://docs.joinmastodon.org) is a statically generated site. You can [submit merge requests to mastodon/documentation](https://github.com/mastodon/documentation). +The [Mastodon documentation] is a statically generated site that contains guides +and API docs. Improvements are made via PRs to the [documentation repository]. +[contribution guidelines]: https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md +[Crowdin]: https://crowdin.com/project/mastodon [DEVELOPMENT]: docs/DEVELOPMENT.md +[documentation repository]: https://github.com/mastodon/documentation +[GitHub Issues]: https://github.com/mastodon/mastodon/issues +[keepachangelog]: https://keepachangelog.com/en/1.0.0/ +[Mastodon documentation]: https://docs.joinmastodon.org diff --git a/Gemfile b/Gemfile index 0efcc6562c..5becc118d3 100644 --- a/Gemfile +++ b/Gemfile @@ -104,19 +104,19 @@ gem 'opentelemetry-api', '~> 1.4.0' group :opentelemetry do gem 'opentelemetry-exporter-otlp', '~> 0.29.0', require: false - gem 'opentelemetry-instrumentation-active_job', '~> 0.7.1', require: false - gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.21.0', require: false - gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.21.2', require: false - gem 'opentelemetry-instrumentation-excon', '~> 0.22.0', require: false - gem 'opentelemetry-instrumentation-faraday', '~> 0.25.0', require: false - gem 'opentelemetry-instrumentation-http', '~> 0.23.2', require: false - gem 'opentelemetry-instrumentation-http_client', '~> 0.22.3', require: false - gem 'opentelemetry-instrumentation-net_http', '~> 0.22.4', require: false - gem 'opentelemetry-instrumentation-pg', '~> 0.29.0', require: false - gem 'opentelemetry-instrumentation-rack', '~> 0.25.0', require: false - gem 'opentelemetry-instrumentation-rails', '~> 0.34.0', require: false - gem 'opentelemetry-instrumentation-redis', '~> 0.25.3', require: false - gem 'opentelemetry-instrumentation-sidekiq', '~> 0.25.2', require: false + gem 'opentelemetry-instrumentation-active_job', '~> 0.8.0', require: false + gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.22.0', require: false + gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.22.0', require: false + gem 'opentelemetry-instrumentation-excon', '~> 0.23.0', require: false + gem 'opentelemetry-instrumentation-faraday', '~> 0.26.0', require: false + gem 'opentelemetry-instrumentation-http', '~> 0.24.0', require: false + gem 'opentelemetry-instrumentation-http_client', '~> 0.23.0', require: false + gem 'opentelemetry-instrumentation-net_http', '~> 0.23.0', require: false + gem 'opentelemetry-instrumentation-pg', '~> 0.30.0', require: false + gem 'opentelemetry-instrumentation-rack', '~> 0.26.0', require: false + gem 'opentelemetry-instrumentation-rails', '~> 0.35.0', require: false + gem 'opentelemetry-instrumentation-redis', '~> 0.26.0', require: false + gem 'opentelemetry-instrumentation-sidekiq', '~> 0.26.0', require: false gem 'opentelemetry-sdk', '~> 1.4', require: false end diff --git a/Gemfile.lock b/Gemfile.lock index a4c5f8ad98..54e43482e3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -159,7 +159,7 @@ GEM climate_control (1.2.0) cocoon (1.2.15) color_diff (0.1) - concurrent-ruby (1.3.4) + concurrent-ruby (1.3.5) connection_pool (2.5.0) cose (1.3.1) cbor (~> 0.5.9) @@ -473,78 +473,78 @@ GEM opentelemetry-common (~> 0.20) opentelemetry-sdk (~> 1.2) opentelemetry-semantic_conventions - opentelemetry-helpers-sql-obfuscation (0.2.1) + opentelemetry-helpers-sql-obfuscation (0.3.0) opentelemetry-common (~> 0.21) - opentelemetry-instrumentation-action_mailer (0.3.0) + opentelemetry-instrumentation-action_mailer (0.4.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.7) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-action_pack (0.10.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-action_pack (0.11.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-base (~> 0.23.0) opentelemetry-instrumentation-rack (~> 0.21) - opentelemetry-instrumentation-action_view (0.8.0) + opentelemetry-instrumentation-action_view (0.9.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.7) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_job (0.7.8) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-active_job (0.8.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_model_serializers (0.21.1) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-active_model_serializers (0.22.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (>= 0.7.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_record (0.8.1) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-active_record (0.9.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_support (0.7.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-active_support (0.8.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-base (0.22.6) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-base (0.23.0) opentelemetry-api (~> 1.0) opentelemetry-common (~> 0.21) opentelemetry-registry (~> 0.1) - opentelemetry-instrumentation-concurrent_ruby (0.21.4) + opentelemetry-instrumentation-concurrent_ruby (0.22.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-excon (0.22.5) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-excon (0.23.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-faraday (0.25.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-faraday (0.26.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-http (0.23.5) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-http (0.24.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-http_client (0.22.8) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-http_client (0.23.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-net_http (0.22.8) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-net_http (0.23.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-pg (0.29.2) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-pg (0.30.0) opentelemetry-api (~> 1.0) opentelemetry-helpers-sql-obfuscation - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (0.25.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-rack (0.26.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rails (0.34.1) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-rails (0.35.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-action_mailer (~> 0.3.0) - opentelemetry-instrumentation-action_pack (~> 0.10.0) - opentelemetry-instrumentation-action_view (~> 0.8.0) - opentelemetry-instrumentation-active_job (~> 0.7.0) - opentelemetry-instrumentation-active_record (~> 0.8.0) - opentelemetry-instrumentation-active_support (~> 0.7.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-concurrent_ruby (~> 0.21.4) - opentelemetry-instrumentation-redis (0.25.7) + opentelemetry-instrumentation-action_mailer (~> 0.4.0) + opentelemetry-instrumentation-action_pack (~> 0.11.0) + opentelemetry-instrumentation-action_view (~> 0.9.0) + opentelemetry-instrumentation-active_job (~> 0.8.0) + opentelemetry-instrumentation-active_record (~> 0.9.0) + opentelemetry-instrumentation-active_support (~> 0.8.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0) + opentelemetry-instrumentation-redis (0.26.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-sidekiq (0.25.7) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-sidekiq (0.26.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-base (~> 0.23.0) opentelemetry-registry (0.3.1) opentelemetry-api (~> 1.1) opentelemetry-sdk (1.6.0) @@ -833,7 +833,7 @@ GEM unf (~> 0.1.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2024.2) + tzinfo-data (1.2025.1) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext @@ -960,19 +960,19 @@ DEPENDENCIES omniauth_openid_connect (~> 0.6.1) opentelemetry-api (~> 1.4.0) opentelemetry-exporter-otlp (~> 0.29.0) - opentelemetry-instrumentation-active_job (~> 0.7.1) - opentelemetry-instrumentation-active_model_serializers (~> 0.21.0) - opentelemetry-instrumentation-concurrent_ruby (~> 0.21.2) - opentelemetry-instrumentation-excon (~> 0.22.0) - opentelemetry-instrumentation-faraday (~> 0.25.0) - opentelemetry-instrumentation-http (~> 0.23.2) - opentelemetry-instrumentation-http_client (~> 0.22.3) - opentelemetry-instrumentation-net_http (~> 0.22.4) - opentelemetry-instrumentation-pg (~> 0.29.0) - opentelemetry-instrumentation-rack (~> 0.25.0) - opentelemetry-instrumentation-rails (~> 0.34.0) - opentelemetry-instrumentation-redis (~> 0.25.3) - opentelemetry-instrumentation-sidekiq (~> 0.25.2) + opentelemetry-instrumentation-active_job (~> 0.8.0) + opentelemetry-instrumentation-active_model_serializers (~> 0.22.0) + opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0) + opentelemetry-instrumentation-excon (~> 0.23.0) + opentelemetry-instrumentation-faraday (~> 0.26.0) + opentelemetry-instrumentation-http (~> 0.24.0) + opentelemetry-instrumentation-http_client (~> 0.23.0) + opentelemetry-instrumentation-net_http (~> 0.23.0) + opentelemetry-instrumentation-pg (~> 0.30.0) + opentelemetry-instrumentation-rack (~> 0.26.0) + opentelemetry-instrumentation-rails (~> 0.35.0) + opentelemetry-instrumentation-redis (~> 0.26.0) + opentelemetry-instrumentation-sidekiq (~> 0.26.0) opentelemetry-sdk (~> 1.4) ox (~> 2.14) parslet diff --git a/app/controllers/api/v1/accounts/credentials_controller.rb b/app/controllers/api/v1/accounts/credentials_controller.rb index a378425183..1b64eb4ef2 100644 --- a/app/controllers/api/v1/accounts/credentials_controller.rb +++ b/app/controllers/api/v1/accounts/credentials_controller.rb @@ -33,6 +33,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController :discoverable, :hide_collections, :indexable, + attribution_domains: [], fields_attributes: [:name, :value] ) end diff --git a/app/controllers/settings/verifications_controller.rb b/app/controllers/settings/verifications_controller.rb index 4e0663253c..9cc60ba2e8 100644 --- a/app/controllers/settings/verifications_controller.rb +++ b/app/controllers/settings/verifications_controller.rb @@ -18,7 +18,9 @@ class Settings::VerificationsController < Settings::BaseController private def account_params - params.require(:account).permit(:attribution_domains_as_text) + params.require(:account).permit(:attribution_domains).tap do |params| + params[:attribution_domains] = params[:attribution_domains].split if params[:attribution_domains] + end end def set_account diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index 8a0efb6a31..b82634ca7c 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -69,6 +69,11 @@ "announcement.announcement": "Annooncement", "attachments_list.unprocessed": "(No processed)", "audio.hide": "Stow audio", + "block_modal.remote_users_caveat": "We will ask the server {domain} tae respect yer decision. Awtho mind compliance isnae a guarantee, sin some servers may haundle blocks differently. Public posts may yet be visible tae non-loggit-in uisers.", + "block_modal.they_cant_mention": "Thay cannae mention or follae you.", + "block_modal.they_cant_see_posts": "Thay cannae see yer posts and you willnae see thairs.", + "block_modal.they_will_know": "Thay can see that they're blockit.", + "block_modal.title": "Block uiser?", "boost_modal.combo": "Ye kin chap {combo} tae dingie this neist tim", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requestit page cuidnae be rennert. Hit cuid be doon tae a bug in wir code, or a brooser compatability issue.", @@ -112,9 +117,11 @@ "community.column_settings.remote_only": "Remote ainly", "compose.language.change": "Chynge Leid", "compose.language.search": "Seirch leids...", + "compose.published.body": "Post published.", + "compose.saved.body": "Post saved.", "compose_form.direct_message_warning_learn_more": "Lairn mair", "compose_form.encryption_warning": "Posts on Mastodon isnae en-tae-en encryptit. Dinnae share onie sensitive information ower Mastodon.", - "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", + "compose_form.hashtag_warning": "This post willnae be listit under ony hashtag fir it is unlistit. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Yer accoont isnae {locked}. Awbody kin follae ye for tae luik at yer follaer-ainly posts.", "compose_form.lock_disclaimer.lock": "lockit", "compose_form.placeholder": "Whit's on yer mind?", @@ -124,6 +131,7 @@ "compose_form.publish_form": "Publish", "compose_form.spoiler.marked": "Tak aff the content warnin", "compose_form.spoiler.unmarked": "Pit on a content warnin", + "compose_form.spoiler_placeholder": "Content warnin (optional)", "confirmation_modal.cancel": "Stap", "confirmations.block.confirm": "Dingie", "confirmations.delete.confirm": "Delete", @@ -132,6 +140,7 @@ "confirmations.delete_list.message": "Ye shair thit ye'r wantin fir tae delete this post fir ever?", "confirmations.discard_edit_media.confirm": "Fling awa", "confirmations.discard_edit_media.message": "Ye'v chynges tae the media description or preview thit ye'v no saved, fling them awa onie weys?", + "confirmations.edit.message": "Editin the noo will owerwrit the message yer componin. Are ye suir yer wantin tae proceed?", "confirmations.logout.confirm": "Log oot", "confirmations.logout.message": "Ye shair thit ye'r wantin tae log oot?", "confirmations.mute.confirm": "Wheesht", @@ -180,7 +189,7 @@ "empty_column.explore_statuses": "Naethin is trendin the noo. Check back efter!", "empty_column.follow_requests": "Ye dinnae hae onie follaer requests yit. Whan ye get ane, it'll shaw up here.", "empty_column.hashtag": "There naethin in this hashtag yit.", - "empty_column.home": "Yer hame timeline is toum! Follae mair fowk fir tae full it up. {suggestions}", + "empty_column.home": "Yer hame timeline is toum! Follae mair fowk fir tae full it up.", "empty_column.list": "There naethin in this list yit. Whan memmers o this list publish new posts, ye'll see them here.", "empty_column.mutes": "Ye'v no wheesht onie uisers yit.", "empty_column.notifications": "Ye dinnae hae onie notes yit. Whan ither fowk interacks wi ye, ye'll see it here.", @@ -466,7 +475,7 @@ "status.show_less_all": "Shaw less fir aw", "status.show_more_all": "Shaw mair fir aw", "status.show_original": "Shaw original", - "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", + "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}", "status.translate": "Owerset", "status.translated_from_with": "Owerset fae {lang} uisin {provider}", "status.unmute_conversation": "Unwheesht conversation", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 558df23eb0..55cb2313d4 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -11,7 +11,7 @@ "about.not_available": "此信息在当前服务器尚不可用。", "about.powered_by": "由 {mastodon} 驱动的去中心化社交媒体", "about.rules": "站点规则", - "account.account_note_header": "备注", + "account.account_note_header": "个人备注", "account.add_or_remove_from_list": "从列表中添加或移除", "account.badges.bot": "机器人", "account.badges.group": "群组", @@ -26,7 +26,7 @@ "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发布嘟文时通知我", - "account.endorse": "在账户页推荐此用户", + "account.endorse": "在个人资料中推荐此用户", "account.featured_tags.last_status_at": "上次发言于 {date}", "account.featured_tags.last_status_never": "暂无嘟文", "account.featured_tags.title": "{name} 的精选标签", @@ -43,8 +43,8 @@ "account.in_memoriam": "谨此悼念。", "account.joined_short": "加入于", "account.languages": "更改订阅语言", - "account.link_verified_on": "已于 {date} 验证此链接的所有权", - "account.locked_info": "此账户已锁嘟。账户所有人会手动审核新关注者。", + "account.link_verified_on": "此链接的所有权已在 {date} 检查", + "account.locked_info": "此账号已锁嘟。账号所有人会手动审核新关注者。", "account.media": "媒体", "account.mention": "提及 @{name}", "account.moved_to": "{name} 的新账号是:", @@ -60,9 +60,9 @@ "account.report": "举报 @{name}", "account.requested": "正在等待对方同意。点击取消发送关注请求", "account.requested_follow": "{name} 向你发送了关注请求", - "account.share": "分享 @{name} 的账户页", + "account.share": "分享 @{name} 的个人资料", "account.show_reblogs": "显示来自 @{name} 的转嘟", - "account.statuses_counter": "{count, plural, other {{counter} 嘟文}}", + "account.statuses_counter": "{count, plural, other {{counter} 条嘟文}}", "account.unblock": "取消屏蔽 @{name}", "account.unblock_domain": "取消屏蔽 {domain} 域名", "account.unblock_short": "取消屏蔽", @@ -77,9 +77,9 @@ "admin.dashboard.retention.average": "平均", "admin.dashboard.retention.cohort": "注册月份", "admin.dashboard.retention.cohort_size": "新用户", - "admin.impact_report.instance_accounts": "将被删除的账户", - "admin.impact_report.instance_followers": "本站用户即将丢失的关注者", - "admin.impact_report.instance_follows": "对方站点用户即将丢失的关注者", + "admin.impact_report.instance_accounts": "将被删除的账号", + "admin.impact_report.instance_followers": "本实例用户即将丢失的关注者", + "admin.impact_report.instance_follows": "对方实例用户将会丢失的关注者", "admin.impact_report.title": "影响摘要", "alert.rate_limited.message": "请在 {retry_time, time, medium} 后重试。", "alert.rate_limited.title": "频率受限", @@ -89,23 +89,23 @@ "announcement.announcement": "公告", "annual_report.summary.archetype.booster": "潮流捕手", "annual_report.summary.archetype.lurker": "吃瓜群众", - "annual_report.summary.archetype.oracle": "无所不在", - "annual_report.summary.archetype.pollster": "投票狂魔", - "annual_report.summary.archetype.replier": "评论区原住民", + "annual_report.summary.archetype.oracle": "未卜先知", + "annual_report.summary.archetype.pollster": "民调专家", + "annual_report.summary.archetype.replier": "社交蝴蝶", "annual_report.summary.followers.followers": "关注者", "annual_report.summary.followers.total": "共 {count} 人", - "annual_report.summary.here_it_is": "你的 {year} 年度回顾在此:", - "annual_report.summary.highlighted_post.by_favourites": "最受欢迎嘟嘟", - "annual_report.summary.highlighted_post.by_reblogs": "传播最广嘟嘟", - "annual_report.summary.highlighted_post.by_replies": "最热闹嘟嘟", + "annual_report.summary.here_it_is": "您的 {year} 年度回顾在此:", + "annual_report.summary.highlighted_post.by_favourites": "最受欢迎的嘟文", + "annual_report.summary.highlighted_post.by_reblogs": "传播最广的嘟文", + "annual_report.summary.highlighted_post.by_replies": "评论最多的嘟文", "annual_report.summary.highlighted_post.possessive": "{name} 的", "annual_report.summary.most_used_app.most_used_app": "最常用的应用", "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常用的话题", "annual_report.summary.most_used_hashtag.none": "无", - "annual_report.summary.new_posts.new_posts": "新嘟嘟", + "annual_report.summary.new_posts.new_posts": "新嘟文", "annual_report.summary.percentile.text": "这使你跻身 {domain} 用户的前", "annual_report.summary.percentile.we_wont_tell_bernie": " ", - "annual_report.summary.thanks": "谢谢你这一年和 Mastodon 上的大家一起嘟嘟!", + "annual_report.summary.thanks": "感谢您成为 Mastodon 的一员!", "attachments_list.unprocessed": "(未处理)", "audio.hide": "隐藏音频", "block_modal.remote_users_caveat": "我们将要求站点 {domain} 尊重你的决定。然而,我们无法保证对方一定遵从,因为某些站点可能会以不同的方案处理屏蔽操作。公开嘟文仍然可能对未登录用户可见。", @@ -114,11 +114,11 @@ "block_modal.they_cant_mention": "他们不能提及或关注你。", "block_modal.they_cant_see_posts": "他们看不到你的嘟文,你也看不到他们的嘟文。", "block_modal.they_will_know": "对方将能看到自己被屏蔽。", - "block_modal.title": "屏蔽该用户?", + "block_modal.title": "确定要屏蔽此用户?", "block_modal.you_wont_see_mentions": "你将不会看到提及他们的嘟文。", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", - "boost_modal.reblog": "是否转嘟?", - "boost_modal.undo_reblog": "是否取消转嘟?", + "boost_modal.reblog": "是否要转嘟?", + "boost_modal.undo_reblog": "是否要取消转嘟?", "bundle_column_error.copy_stacktrace": "复制错误报告", "bundle_column_error.error.body": "请求的页面无法渲染,可能是代码出现错误或浏览器存在兼容性问题。", "bundle_column_error.error.title": "糟糕!", @@ -131,14 +131,14 @@ "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入此页面时发生了错误。", "bundle_modal_error.retry": "重试", - "closed_registrations.other_server_instructions": "基于 Mastodon 的去中心化特性,你可以在其它服务器上创建账号,并与本站用户保持互动。", - "closed_registrations_modal.description": "你目前无法在 {domain} 上创建账户,但请注意,使用 Mastodon 并非需要专门在 {domain} 上注册账户。", + "closed_registrations.other_server_instructions": "基于 Mastodon 去中心化的特性,你可以其他服务器上创建账号,并继续与此服务器互动。", + "closed_registrations_modal.description": "你目前无法在 {domain} 上创建账号,但请注意,使用 Mastodon 并非需要专门在 {domain} 上注册账号。", "closed_registrations_modal.find_another_server": "查找其他服务器", "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以无论在哪个实例创建账号,都可以关注本服务器上的账号并与之交流。 或者你还可以自己搭建实例!", "closed_registrations_modal.title": "注册 Mastodon 账号", "column.about": "关于", "column.blocks": "屏蔽的用户", - "column.bookmarks": "收藏夹", + "column.bookmarks": "书签", "column.community": "本站时间线", "column.create_list": "创建列表", "column.direct": "私下提及", @@ -175,7 +175,7 @@ "compose_form.direct_message_warning_learn_more": "详细了解", "compose_form.encryption_warning": "Mastodon 上的嘟文未经端到端加密。请勿在 Mastodon 上分享敏感信息。", "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题的列表下。只有公开的嘟文才能通过话题进行搜索。", - "compose_form.lock_disclaimer": "你的账户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", + "compose_form.lock_disclaimer": "你的账号没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", "compose_form.lock_disclaimer.lock": "锁嘟", "compose_form.placeholder": "想写什么?", "compose_form.poll.duration": "投票期限", @@ -186,7 +186,7 @@ "compose_form.poll.switch_to_single": "将投票改为单选", "compose_form.poll.type": "类型", "compose_form.publish": "发布", - "compose_form.publish_form": "新建嘟文", + "compose_form.publish_form": "发嘟", "compose_form.reply": "回复", "compose_form.save_changes": "更改", "compose_form.spoiler.marked": "移除内容警告", @@ -196,21 +196,21 @@ "confirmations.block.confirm": "屏蔽", "confirmations.delete.confirm": "删除", "confirmations.delete.message": "你确定要删除这条嘟文吗?", - "confirmations.delete.title": "是否删除嘟文?", + "confirmations.delete.title": "确定要删除嘟文?", "confirmations.delete_list.confirm": "删除", - "confirmations.delete_list.message": "你确定要永久删除此列表吗?", - "confirmations.delete_list.title": "是否删除列表?", + "confirmations.delete_list.message": "确定要永久删除此列表吗?", + "confirmations.delete_list.title": "确定要删除列表?", "confirmations.discard_edit_media.confirm": "丢弃", "confirmations.discard_edit_media.message": "你还有未保存的媒体描述或预览修改,仍要丢弃吗?", "confirmations.edit.confirm": "编辑", "confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?", - "confirmations.edit.title": "是否重写嘟文?", + "confirmations.edit.title": "确定要重写嘟文?", "confirmations.follow_to_list.confirm": "关注并添加到列表", "confirmations.follow_to_list.message": "你需要先关注 {name},才能将其添加到列表。", - "confirmations.follow_to_list.title": "是否关注用户?", + "confirmations.follow_to_list.title": "确定要关注此用户?", "confirmations.logout.confirm": "退出登录", "confirmations.logout.message": "确定要退出登录吗?", - "confirmations.logout.title": "是否退出登录?", + "confirmations.logout.title": "确定要退出登录?", "confirmations.mute.confirm": "隐藏", "confirmations.redraft.confirm": "删除并重新编辑", "confirmations.redraft.message": "确定删除这条嘟文并重写吗?所有相关的喜欢和转嘟都将丢失,嘟文的回复也会失去关联。", @@ -220,7 +220,7 @@ "confirmations.reply.title": "是否重写嘟文?", "confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", - "confirmations.unfollow.title": "是否取消关注用户?", + "confirmations.unfollow.title": "确定要取消关注用户?", "content_warning.hide": "隐藏", "content_warning.show": "展开", "content_warning.show_more": "展开", @@ -248,10 +248,10 @@ "domain_block_modal.they_can_interact_with_old_posts": "该站点的用户可以与你之前的嘟文交互。", "domain_block_modal.they_cant_follow": "该站点上将没有人可以关注你。", "domain_block_modal.they_wont_know": "对方不会知道自己被屏蔽。", - "domain_block_modal.title": "是否屏蔽该域名?", + "domain_block_modal.title": "确定要屏蔽此域名?", "domain_block_modal.you_will_lose_num_followers": "你将失去 {followersCount, plural, other {{followersCountDisplay} 名关注者}}和 {followingCount, plural, other {{followingCountDisplay} 名关注}}。", "domain_block_modal.you_will_lose_relationships": "你将丢失该站点上的所有关注与关注者。", - "domain_block_modal.you_wont_see_posts": "你将不会看到该站点用户的嘟文或通知。", + "domain_block_modal.you_wont_see_posts": "你将不会看到此服务器上用户的嘟文或通知。", "domain_pill.activitypub_lets_connect": "它可以让你与不同社交应用上的人交流互动,而不仅限于 Mastodon。", "domain_pill.activitypub_like_language": "ActivityPub 好比 Mastodon 与其它社交网络交流时使用的语言。", "domain_pill.server": "服务器", @@ -283,7 +283,7 @@ "emoji_button.symbols": "符号", "emoji_button.travel": "旅行与地点", "empty_column.account_hides_collections": "该用户选择不公开此信息", - "empty_column.account_suspended": "账户已被停用", + "empty_column.account_suspended": "账号已被停用", "empty_column.account_timeline": "这里没有嘟文!", "empty_column.account_unavailable": "个人资料不可用", "empty_column.blocks": "你还未屏蔽任何用户。", @@ -300,7 +300,7 @@ "empty_column.home": "你的主页时间线还没有内容!快去关注更多人吧。", "empty_column.list": "列表中还没有任何内容。当列表成员发布新嘟文时,它们将出现在这里。", "empty_column.mutes": "你没有隐藏任何用户。", - "empty_column.notification_requests": "都看完了!这里没有任何未读通知。当收到新的通知时,它们将根据你的设置显示在这里。", + "empty_column.notification_requests": "一扫而空!这里没有任何未读通知。当收到新的通知时,将根据你的设置显示在这里。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", "empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了", "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。", @@ -318,16 +318,16 @@ "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": "要检查并进一步配置这条过滤规则,请前往{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.prompt_new": "新类别:{name}", "filter_modal.select_filter.search": "搜索或创建", - "filter_modal.select_filter.subtitle": "使用一个已存在条目,或创建新条目", + "filter_modal.select_filter.subtitle": "使用已存在类别,或创建新类别", "filter_modal.select_filter.title": "过滤此嘟文", "filter_modal.title.status": "过滤一条嘟文", "filter_warning.matches_filter": "命中过滤规则 “{title}”", @@ -343,8 +343,8 @@ "follow_suggestions.dismiss": "不再显示", "follow_suggestions.featured_longer": "由 {domain} 管理团队精选", "follow_suggestions.friends_of_friends_longer": "在你关注的人中很受欢迎", - "follow_suggestions.hints.featured": "该用户已被 {domain} 管理团队精选。", - "follow_suggestions.hints.friends_of_friends": "该用户在你关注的人中很受欢迎。", + "follow_suggestions.hints.featured": "该账号已被 {domain} 管理团队精选。", + "follow_suggestions.hints.friends_of_friends": "该账号在你关注的人中很受欢迎。", "follow_suggestions.hints.most_followed": "该用户是 {domain} 上关注度最高的用户之一。", "follow_suggestions.hints.most_interactions": "该用户最近在 {domain} 获得了很多关注。", "follow_suggestions.hints.similar_to_recently_followed": "该用户与你最近关注的人类似。", @@ -381,9 +381,9 @@ "hashtag.follow": "关注话题", "hashtag.unfollow": "取消关注话题", "hashtags.and_other": "… 和另外 {count, plural, other {# 个话题}}", - "hints.profiles.followers_may_be_missing": "该账户的关注者列表可能没有完全显示。", - "hints.profiles.follows_may_be_missing": "该账户的关注列表可能没有完全显示。", - "hints.profiles.posts_may_be_missing": "该账户的嘟文可能没有完全显示。", + "hints.profiles.followers_may_be_missing": "该账号的关注者列表可能没有完全显示。", + "hints.profiles.follows_may_be_missing": "该账号的关注列表可能没有完全显示。", + "hints.profiles.posts_may_be_missing": "该账号的嘟文可能没有完全显示。", "hints.profiles.see_more_followers": "在 {domain} 查看更多关注者", "hints.profiles.see_more_follows": "在 {domain} 查看更多关注", "hints.profiles.see_more_posts": "在 {domain} 查看更多嘟文", @@ -399,19 +399,19 @@ "ignore_notifications_modal.disclaimer": "Mastodon无法通知对方用户你忽略了他们的通知。忽略通知不会阻止消息本身的发送。", "ignore_notifications_modal.filter_instead": "改为过滤", "ignore_notifications_modal.filter_to_act_users": "你仍然可以接受、拒绝或举报用户", - "ignore_notifications_modal.filter_to_avoid_confusion": "过滤有助于避免潜在的混淆", + "ignore_notifications_modal.filter_to_avoid_confusion": "选择过滤有助于避免潜在的混淆", "ignore_notifications_modal.filter_to_review_separately": "你可以单独查看被过滤的通知", "ignore_notifications_modal.ignore": "忽略通知", "ignore_notifications_modal.limited_accounts_title": "是否忽略来自受限账号的通知?", - "ignore_notifications_modal.new_accounts_title": "是否忽略来自新账户的通知?", + "ignore_notifications_modal.new_accounts_title": "是否忽略来自新账号的通知?", "ignore_notifications_modal.not_followers_title": "是否忽略未关注你的人的通知?", "ignore_notifications_modal.not_following_title": "是否忽略你未关注的人的通知?", "ignore_notifications_modal.private_mentions_title": "是否忽略不请自来的私下提及?", - "interaction_modal.action.favourite": "你需要切换到自己的账户,再发送喜欢。", - "interaction_modal.action.follow": "你需要切换到自己的账户,再进行关注。", - "interaction_modal.action.reblog": "你需要切换到自己的账户,再进行转嘟。", - "interaction_modal.action.reply": "你需要切换到自己的账户,再发送回复。", - "interaction_modal.action.vote": "你需要切换到自己的账户,再发送投票。", + "interaction_modal.action.favourite": "你需要切换到自己的账号,再发送喜欢。", + "interaction_modal.action.follow": "你需要切换到自己的账号,再进行关注。", + "interaction_modal.action.reblog": "你需要切换到自己的账号,再进行转嘟。", + "interaction_modal.action.reply": "你需要切换到自己的账号,再发送回复。", + "interaction_modal.action.vote": "你需要切换到自己的账号,再发送投票。", "interaction_modal.go": "跳转", "interaction_modal.no_account_yet": "还没有账号?", "interaction_modal.on_another_server": "在另一服务器", @@ -429,7 +429,7 @@ "keyboard_shortcuts.blocked": "打开被屏蔽用户列表", "keyboard_shortcuts.boost": "转嘟", "keyboard_shortcuts.column": "选中某栏", - "keyboard_shortcuts.compose": "选中输入框", + "keyboard_shortcuts.compose": "选择输入框", "keyboard_shortcuts.description": "说明", "keyboard_shortcuts.direct": "打开私下提及栏", "keyboard_shortcuts.down": "在列表中让光标下移", @@ -444,11 +444,11 @@ "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.pinned": "打开置顶嘟文列表", - "keyboard_shortcuts.profile": "打开作者的账户页", + "keyboard_shortcuts.profile": "打开作者的个人资料", "keyboard_shortcuts.reply": "回复嘟文", "keyboard_shortcuts.requests": "打开关注请求列表", "keyboard_shortcuts.search": "选中搜索框", @@ -513,7 +513,7 @@ "navigation_bar.administration": "管理", "navigation_bar.advanced_interface": "在高级网页界面中打开", "navigation_bar.blocks": "已屏蔽的用户", - "navigation_bar.bookmarks": "收藏夹", + "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间线", "navigation_bar.compose": "撰写新嘟文", "navigation_bar.direct": "私下提及", @@ -529,7 +529,7 @@ "navigation_bar.logout": "退出登录", "navigation_bar.moderation": "审核", "navigation_bar.mutes": "已隐藏的用户", - "navigation_bar.opened_in_classic_interface": "嘟文页、账户页与其他某些页面默认在经典网页界面中打开。", + "navigation_bar.opened_in_classic_interface": "嘟文页、个人资料与其他某些页面默认在经典网页界面中打开。", "navigation_bar.personal": "个人", "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "偏好设置", @@ -592,16 +592,16 @@ "notification_requests.dismiss_multiple": "{count, plural, other {拒绝 # 个请求…}}", "notification_requests.edit_selection": "编辑", "notification_requests.exit_selection": "完成", - "notification_requests.explainer_for_limited_account": "来自此账户的通知已被过滤,因为此账户已被管理员限制。", - "notification_requests.explainer_for_limited_remote_account": "来自此账户的通知已被过滤,因为此账户或其所在的服务器已被管理员限制。", + "notification_requests.explainer_for_limited_account": "来自该账号的通知已被过滤,因为该账号已被管理员限制。", + "notification_requests.explainer_for_limited_remote_account": "来自该账号的通知已被过滤,因为该账号或其所在的实例已被管理员限制。", "notification_requests.maximize": "最大化", "notification_requests.minimize_banner": "最小化被过滤通知横幅", "notification_requests.notifications_from": "来自 {name} 的通知", "notification_requests.title": "被过滤的通知", "notification_requests.view": "查看通知", "notifications.clear": "清空通知列表", - "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", - "notifications.clear_title": "是否清空通知?", + "notifications.clear_confirmation": "确定要永久清空通知列表吗?", + "notifications.clear_title": "确定要清空通知?", "notifications.column_settings.admin.report": "新举报:", "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", @@ -616,7 +616,7 @@ "notifications.column_settings.push": "推送通知", "notifications.column_settings.reblog": "转嘟:", "notifications.column_settings.show": "在通知栏显示", - "notifications.column_settings.sound": "播放提示音", + "notifications.column_settings.sound": "播放音效", "notifications.column_settings.status": "新嘟文:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", @@ -643,11 +643,11 @@ "notifications.policy.filter_limited_accounts_hint": "被服务器管理员限制的账号", "notifications.policy.filter_limited_accounts_title": "受限账号", "notifications.policy.filter_new_accounts.hint": "注册未满 {days, plural, other {# 天}} 的账号", - "notifications.policy.filter_new_accounts_title": "新账户", + "notifications.policy.filter_new_accounts_title": "新账号", "notifications.policy.filter_not_followers_hint": "包括关注你未满 {days, plural, other {# 天}}的人", "notifications.policy.filter_not_followers_title": "没有关注你的人", "notifications.policy.filter_not_following_hint": "需要你手动批准", - "notifications.policy.filter_not_following_title": "你没有关注的人", + "notifications.policy.filter_not_following_title": "需要你手动批准", "notifications.policy.filter_private_mentions_hint": "过滤通知,除非对应嘟文是在回复你的私下提及,或来自你关注的人。", "notifications.policy.filter_private_mentions_title": "不请自来的私下提及", "notifications.policy.title": "管理来自 … 的通知", @@ -659,8 +659,8 @@ "onboarding.follows.empty": "很抱歉,现在无法显示任何结果。你可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。", "onboarding.follows.search": "搜索", "onboarding.follows.title": "关注用户,玩转 Mastodon", - "onboarding.profile.discoverable": "让我的账户可被他人发现", - "onboarding.profile.discoverable_hint": "当你在 Mastodon 上启用发现功能时,你的嘟文可能会出现在搜索结果与热门中,你的账户可能会被推荐给与你兴趣相似的人。", + "onboarding.profile.discoverable": "让我的账号可被他人发现", + "onboarding.profile.discoverable_hint": "当你在 Mastodon 上启用发现功能时,你的嘟文可能会出现在搜索结果与热门中,你的账号可能会被推荐给与你兴趣相似的人。", "onboarding.profile.display_name": "昵称", "onboarding.profile.display_name_hint": "你的全名或昵称…", "onboarding.profile.note": "简介", @@ -668,7 +668,7 @@ "onboarding.profile.save_and_continue": "保存并继续", "onboarding.profile.title": "设置个人资料", "onboarding.profile.upload_avatar": "上传头像", - "onboarding.profile.upload_header": "上传账户页封面图", + "onboarding.profile.upload_header": "上传账号封面图", "password_confirmation.exceeds_maxlength": "密码确认超过最大密码长度", "password_confirmation.mismatching": "确认密码与密码不一致。", "picture_in_picture.restore": "恢复", @@ -687,7 +687,7 @@ "privacy.direct.short": "特定的人", "privacy.private.long": "仅限你的关注者", "privacy.private.short": "关注者", - "privacy.public.long": "所有 Mastodon 内外的人", + "privacy.public.long": "", "privacy.public.short": "公开", "privacy.unlisted.additional": "此模式的行为与“公开”类似,只是嘟文不会出现在实时动态、话题、探索或 Mastodon 搜索页面中,即使您已全局开启了对应的发现设置。", "privacy.unlisted.long": "减少算法影响", @@ -720,7 +720,7 @@ "report.categories.violation": "内容违反一条或多条服务器规则", "report.category.subtitle": "选择最佳匹配", "report.category.title": "告诉我们此 {type} 存在的问题", - "report.category.title_account": "账户", + "report.category.title_account": "账号", "report.category.title_status": "嘟文", "report.close": "完成", "report.comment.title": "还有什么你认为我们应该知道的吗?", @@ -743,7 +743,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": "以下是你控制你在 Mastodon 上能看到哪些内容的选项:", @@ -751,7 +751,7 @@ "report.thanks.title": "不想看到这个内容?", "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", "report.unfollow": "取消关注 @{name}", - "report.unfollow_explanation": "你正在关注此账户。如果不想继续在主页看到他们的嘟文,取消对他们的关注即可。", + "report.unfollow_explanation": "你正在关注此账号。如果不想继续在主页看到他们的嘟文,取消对他们的关注即可。", "report_notification.attached_statuses": "附上 {count} 条嘟文", "report_notification.categories.legal": "法律义务", "report_notification.categories.legal_sentence": "非法内容", @@ -764,8 +764,8 @@ "report_notification.open": "打开举报", "search.no_recent_searches": "无最近搜索", "search.placeholder": "搜索", - "search.quick_action.account_search": "包含 {x} 的账户", - "search.quick_action.go_to_account": "打开 {x} 的账户页", + "search.quick_action.account_search": "包含 {x} 的账号", + "search.quick_action.go_to_account": "打开 {x} 的个人资料", "search.quick_action.go_to_hashtag": "打开话题 {x}", "search.quick_action.open_url": "在 Mastodon 中打开此链接", "search.quick_action.status_search": "包含 {x} 的嘟文", @@ -782,7 +782,7 @@ "search_results.all": "全部", "search_results.hashtags": "话题", "search_results.no_results": "未找到结果。", - "search_results.no_search_yet": "可以尝试搜索嘟文、账户或话题。", + "search_results.no_search_yet": "不妨试下搜索嘟文、账号或话题。", "search_results.see_all": "查看全部", "search_results.statuses": "嘟文", "search_results.title": "搜索 “{q}”", @@ -791,7 +791,7 @@ "server_banner.administered_by": "本站管理员:", "server_banner.is_one_of_many": "{domain} 是可用于参与联邦宇宙的众多独立 Mastodon 站点之一。", "server_banner.server_stats": "服务器统计数据:", - "sign_in_banner.create_account": "创建账户", + "sign_in_banner.create_account": "创建账号", "sign_in_banner.follow_anyone": "关注联邦宇宙中的任何人,并按时间顺序查看所有内容。没有算法、广告或诱导链接。", "sign_in_banner.mastodon_is": "Mastodon 是了解最新动态的最佳途径。", "sign_in_banner.sign_in": "登录", @@ -827,14 +827,14 @@ "status.mute": "隐藏 @{name}", "status.mute_conversation": "关闭此对话的通知", "status.open": "展开嘟文", - "status.pin": "在账户页置顶", + "status.pin": "在个人资料页面置顶", "status.pinned": "置顶嘟文", "status.read_more": "查看更多", "status.reblog": "转嘟", "status.reblog_private": "以相同可见性转嘟", "status.reblogged_by": "{name} 转嘟了", "status.reblogs": "{count, plural, other {次转嘟}}", - "status.reblogs.empty": "还没有人转嘟过此条嘟文。转嘟此嘟文的人会显示在这里。", + "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "取消收藏", "status.remove_favourite": "从喜欢列表中移除", @@ -853,7 +853,7 @@ "status.translated_from_with": "由 {provider} 翻译自 {lang}", "status.uncached_media_warning": "预览不可用", "status.unmute_conversation": "恢复此对话的通知提醒", - "status.unpin": "在账户页取消置顶", + "status.unpin": "在个人资料页面取消置顶", "subscribed_languages.lead": "更改此选择后,只有选定语言的嘟文才会出现在你的主页和列表时间线上。选择「无」将显示所有语言的嘟文。", "subscribed_languages.save": "保存更改", "subscribed_languages.target": "更改 {target} 的订阅语言", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 0010c687c0..a06b566d01 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -53,7 +53,7 @@ "account.mute_short": "靜音", "account.muted": "已靜音", "account.mutual": "互相跟隨", - "account.no_bio": "無個人檔案描述", + "account.no_bio": "無個人檔案描述。", "account.open_original_page": "檢視原始頁面", "account.posts": "嘟文", "account.posts_with_replies": "嘟文與回覆", diff --git a/app/models/concerns/account/attribution_domains.rb b/app/models/concerns/account/attribution_domains.rb index 163c2291fe..5f4d9afabf 100644 --- a/app/models/concerns/account/attribution_domains.rb +++ b/app/models/concerns/account/attribution_domains.rb @@ -4,21 +4,9 @@ module Account::AttributionDomains extend ActiveSupport::Concern included do - validates :attribution_domains_as_text, domain: { multiline: true }, lines: { maximum: 100 }, if: -> { local? && will_save_change_to_attribution_domains? } - end + normalizes :attribution_domains, with: ->(arr) { arr.filter_map { |str| str.to_s.strip.delete_prefix('http://').delete_prefix('https://').delete_prefix('*.').presence }.uniq } - def attribution_domains_as_text - self[:attribution_domains].join("\n") - end - - def attribution_domains_as_text=(str) - self[:attribution_domains] = str.split.filter_map do |line| - line - .strip - .delete_prefix('http://') - .delete_prefix('https://') - .delete_prefix('*.') - end + validates :attribution_domains, domain: true, length: { maximum: 100 }, if: -> { local? && will_save_change_to_attribution_domains? } end def can_be_attributed_from?(domain) diff --git a/app/serializers/rest/credential_account_serializer.rb b/app/serializers/rest/credential_account_serializer.rb index 77ccf8c869..ff6ef7ac49 100644 --- a/app/serializers/rest/credential_account_serializer.rb +++ b/app/serializers/rest/credential_account_serializer.rb @@ -18,6 +18,7 @@ class REST::CredentialAccountSerializer < REST::AccountSerializer hide_collections: object.hide_collections, discoverable: object.discoverable, indexable: object.indexable, + attribution_domains: object.attribution_domains, } end diff --git a/app/validators/domain_validator.rb b/app/validators/domain_validator.rb index f975dc8ff2..4b2ae82099 100644 --- a/app/validators/domain_validator.rb +++ b/app/validators/domain_validator.rb @@ -9,18 +9,21 @@ class DomainValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) return if value.blank? - (options[:multiline] ? value.split : [value]).each do |domain| - _, domain = domain.split('@') if options[:acct] + Array.wrap(value).each do |domain| + if options[:acct] + _, domain = domain.split('@') + next if domain.blank? + end - next if domain.blank? - - record.errors.add(attribute, options[:multiline] ? :invalid_domain_on_line : :invalid, value: domain) unless compliant?(domain) + record.errors.add(attribute, value.is_a?(Enumerable) ? :invalid_domain_on_line : :invalid, value: domain) unless compliant?(domain) end end private def compliant?(value) + return false if value.blank? + uri = Addressable::URI.new uri.host = value uri.normalized_host.size < MAX_DOMAIN_LENGTH && uri.normalized_host.split('.').all? { |label| label.size.between?(MIN_LABEL_LENGTH, MAX_LABEL_LENGTH) && label =~ ALLOWED_CHARACTERS_RE } diff --git a/app/validators/lines_validator.rb b/app/validators/lines_validator.rb deleted file mode 100644 index 27a108bb2c..0000000000 --- a/app/validators/lines_validator.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -class LinesValidator < ActiveModel::EachValidator - def validate_each(record, attribute, value) - return if value.blank? - - record.errors.add(attribute, :too_many_lines, limit: options[:maximum]) if options[:maximum].present? && value.split.size > options[:maximum] - end -end diff --git a/app/views/settings/verifications/show.html.haml b/app/views/settings/verifications/show.html.haml index a93ffcebed..c569843793 100644 --- a/app/views/settings/verifications/show.html.haml +++ b/app/views/settings/verifications/show.html.haml @@ -65,7 +65,7 @@ %p.lead= t('author_attribution.then_instructions') .fields-group - = f.input :attribution_domains_as_text, as: :text, wrapper: :with_block_label, input_html: { placeholder: "example1.com\nexample2.com\nexample3.com", rows: 4, autocapitalize: 'none', autocorrect: 'off' } + = f.input :attribution_domains, as: :text, wrapper: :with_block_label, input_html: { value: @account.attribution_domains.join("\n"), placeholder: "example1.com\nexample2.com\nexample3.com", rows: 4, autocapitalize: 'none', autocorrect: 'off' } .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb index 0c6ca026bb..7a1440ed15 100644 --- a/app/workers/activitypub/delivery_worker.rb +++ b/app/workers/activitypub/delivery_worker.rb @@ -62,7 +62,7 @@ class ActivityPub::DeliveryWorker stoplight_wrapper.run do request_pool.with(@host) do |http_client| build_request(http_client).perform do |response| - raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response) + raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response) || unsalvageable_authorization_failure?(response) @performed = true end @@ -70,6 +70,10 @@ class ActivityPub::DeliveryWorker end end + def unsalvageable_authorization_failure?(response) + @source_account.permanently_unavailable? && response.code == 401 + end + def stoplight_wrapper Stoplight(@inbox_url) .with_threshold(STOPLIGHT_FAILURE_THRESHOLD) diff --git a/config/locales/activerecord.be.yml b/config/locales/activerecord.be.yml index c235ae088d..e0c7b14622 100644 --- a/config/locales/activerecord.be.yml +++ b/config/locales/activerecord.be.yml @@ -15,8 +15,6 @@ be: user/invite_request: text: Прычына errors: - messages: - too_many_lines: перавышана абмежаванне ў %{limit} радкоў models: account: attributes: diff --git a/config/locales/activerecord.bg.yml b/config/locales/activerecord.bg.yml index 68c7369033..1a3f71a9cd 100644 --- a/config/locales/activerecord.bg.yml +++ b/config/locales/activerecord.bg.yml @@ -20,7 +20,6 @@ bg: invalid: не е действително име на домейн messages: invalid_domain_on_line: "%{value} не е действително име на домейн" - too_many_lines: е над ограничение от %{limit} реда models: account: attributes: diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index 09b6366b55..23b1d43544 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -20,7 +20,6 @@ ca: invalid: no és un nom de domini vàlid messages: invalid_domain_on_line: "%{value} no és un nom de domini vàlid" - too_many_lines: sobrepassa el límit de %{limit} línies models: account: attributes: diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index e62c4264dd..8aa1848ca1 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -20,7 +20,6 @@ cs: invalid: není platný název domény messages: invalid_domain_on_line: "%{value} není platný název domény" - too_many_lines: překročil limit %{limit} řádků models: account: attributes: diff --git a/config/locales/activerecord.cy.yml b/config/locales/activerecord.cy.yml index 9bc9b3b2bc..526d3f646f 100644 --- a/config/locales/activerecord.cy.yml +++ b/config/locales/activerecord.cy.yml @@ -20,7 +20,6 @@ cy: invalid: "- nid yw'n enw parth dilys" messages: invalid_domain_on_line: Nid yw %{value} yn enw parth dilys - too_many_lines: "- dros y terfyn o %{limit} llinell" models: account: attributes: diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index e611442a1b..0c1eb5e6dd 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -20,7 +20,6 @@ da: invalid: er ikke et gyldigt domænenavn messages: invalid_domain_on_line: "%{value} er ikke et gyldigt domænenavn" - too_many_lines: overstiger grænsen på %{limit} linjer models: account: attributes: diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml index 99d50d49e4..b20e6a65f8 100644 --- a/config/locales/activerecord.de.yml +++ b/config/locales/activerecord.de.yml @@ -20,7 +20,6 @@ de: invalid: ist kein gültiger Domain-Name messages: invalid_domain_on_line: "%{value} ist kein gültiger Domain-Name" - too_many_lines: übersteigt das Limit von %{limit} Zeilen models: account: attributes: diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml index 2b1210e337..a6108ec0ca 100644 --- a/config/locales/activerecord.el.yml +++ b/config/locales/activerecord.el.yml @@ -20,7 +20,6 @@ el: invalid: δεν είναι έγκυρο όνομα τομέα messages: invalid_domain_on_line: το %{value} δεν είναι έγκυρο όνομα τομέα - too_many_lines: υπερβαίνει το όριο των %{limit} γραμμών models: account: attributes: diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml index 72edf5e02f..23bf90e4c8 100644 --- a/config/locales/activerecord.en-GB.yml +++ b/config/locales/activerecord.en-GB.yml @@ -20,7 +20,6 @@ en-GB: invalid: is not a valid domain name messages: invalid_domain_on_line: "%{value} is not a valid domain name" - too_many_lines: is over the limit of %{limit} lines models: account: attributes: diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index 57404d2648..f10a9011b3 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -20,7 +20,6 @@ en: invalid: is not a valid domain name messages: invalid_domain_on_line: "%{value} is not a valid domain name" - too_many_lines: is over the limit of %{limit} lines models: account: attributes: diff --git a/config/locales/activerecord.eo.yml b/config/locales/activerecord.eo.yml index f5e291be8f..fcf5bb3160 100644 --- a/config/locales/activerecord.eo.yml +++ b/config/locales/activerecord.eo.yml @@ -20,7 +20,6 @@ eo: invalid: ne estas valida domajna nomo messages: invalid_domain_on_line: "%{value} ne estas valida domajna nomo" - too_many_lines: superas la limon de %{limit} linioj models: account: attributes: diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml index bc88933734..5a74092458 100644 --- a/config/locales/activerecord.es-AR.yml +++ b/config/locales/activerecord.es-AR.yml @@ -20,7 +20,6 @@ es-AR: invalid: no es un nombre de dominio válido messages: invalid_domain_on_line: "%{value} no es un nombre de dominio válido" - too_many_lines: está por encima del límite de %{limit} líneas models: account: attributes: diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml index c2d27a65b8..4f080eca8c 100644 --- a/config/locales/activerecord.es-MX.yml +++ b/config/locales/activerecord.es-MX.yml @@ -20,7 +20,6 @@ es-MX: invalid: no es un nombre de dominio válido messages: invalid_domain_on_line: "%{value} no es un nombre de dominio válido" - too_many_lines: excede el límite de %{limit} líneas models: account: attributes: diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index d7b25a9042..60d52ad8f2 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -20,7 +20,6 @@ es: invalid: no es un nombre de dominio válido messages: invalid_domain_on_line: "%{value} no es un nombre de dominio válido" - too_many_lines: excede el límite de %{limit} líneas models: account: attributes: diff --git a/config/locales/activerecord.et.yml b/config/locales/activerecord.et.yml index 520e97ffb4..308a97cb3e 100644 --- a/config/locales/activerecord.et.yml +++ b/config/locales/activerecord.et.yml @@ -20,7 +20,6 @@ et: invalid: pole kehtiv domeeninimi messages: invalid_domain_on_line: "%{value} ei ole kehtiv domeeninimi" - too_many_lines: on üle limiidi %{limit} rida models: account: attributes: diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml index eb1033d75c..c59890da9d 100644 --- a/config/locales/activerecord.fa.yml +++ b/config/locales/activerecord.fa.yml @@ -20,7 +20,6 @@ fa: invalid: نام دامنهٔ معتبری نیست messages: invalid_domain_on_line: "%{value} نام دامنهٔ معتبری نیست" - too_many_lines: بیش از کران %{limit} خط است models: account: attributes: diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml index bf98beb6a3..619f2cd584 100644 --- a/config/locales/activerecord.fi.yml +++ b/config/locales/activerecord.fi.yml @@ -20,7 +20,6 @@ fi: invalid: ei ole kelvollinen verkkotunnus messages: invalid_domain_on_line: "%{value} ei ole kelvollinen verkkotunnus" - too_many_lines: ylittää %{limit} rivin rajan models: account: attributes: diff --git a/config/locales/activerecord.fo.yml b/config/locales/activerecord.fo.yml index c419173ef0..054a828755 100644 --- a/config/locales/activerecord.fo.yml +++ b/config/locales/activerecord.fo.yml @@ -20,7 +20,6 @@ fo: invalid: er ikki eitt virkið økisnavn messages: invalid_domain_on_line: "%{value} er ikki eitt virkið økisnavn" - too_many_lines: er longri enn markið á %{limit} reglur models: account: attributes: diff --git a/config/locales/activerecord.fr-CA.yml b/config/locales/activerecord.fr-CA.yml index 41ac187b94..97aee2304c 100644 --- a/config/locales/activerecord.fr-CA.yml +++ b/config/locales/activerecord.fr-CA.yml @@ -20,7 +20,6 @@ fr-CA: invalid: n'est pas un nom de domaine valide messages: invalid_domain_on_line: "%{value} n'est pas un nom de domaine valide" - too_many_lines: dépasse la limite de %{limit} lignes models: account: attributes: diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index e6d5bc1add..85dbaf293b 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -20,7 +20,6 @@ fr: invalid: n'est pas un nom de domaine valide messages: invalid_domain_on_line: "%{value} n'est pas un nom de domaine valide" - too_many_lines: dépasse la limite de %{limit} lignes models: account: attributes: diff --git a/config/locales/activerecord.fy.yml b/config/locales/activerecord.fy.yml index fb95d40868..80727feef8 100644 --- a/config/locales/activerecord.fy.yml +++ b/config/locales/activerecord.fy.yml @@ -20,7 +20,6 @@ fy: invalid: is in ûnjildige domeinnamme messages: invalid_domain_on_line: "%{value} is in ûnjildige domeinnamme" - too_many_lines: giet oer de limyt fan %{limit} rigels models: account: attributes: diff --git a/config/locales/activerecord.ga.yml b/config/locales/activerecord.ga.yml index c02c537076..c0b86482ce 100644 --- a/config/locales/activerecord.ga.yml +++ b/config/locales/activerecord.ga.yml @@ -20,7 +20,6 @@ ga: invalid: nach ainm fearainn bailí é messages: invalid_domain_on_line: Ní ainm fearainn bailí é %{value} - too_many_lines: thar an teorainn de %{limit} línte models: account: attributes: diff --git a/config/locales/activerecord.gd.yml b/config/locales/activerecord.gd.yml index 26848e2584..bcda4a6a31 100644 --- a/config/locales/activerecord.gd.yml +++ b/config/locales/activerecord.gd.yml @@ -20,7 +20,6 @@ gd: invalid: "– chan eil seo ’na ainm àrainne dligheach" messages: invalid_domain_on_line: Chan eil %{value} ’na ainm àrainne dligheach - too_many_lines: "– tha seo thar crìoch de %{limit} nan loidhnichean" models: account: attributes: diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index 8fdff40282..92cbcc5fb4 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -20,7 +20,6 @@ gl: invalid: non é un nome de dominio válido messages: invalid_domain_on_line: "%{value} non é un nome de dominio válido" - too_many_lines: superou o límite de %{limit} liñas models: account: attributes: diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml index b63b41c74e..57f5e4bcbb 100644 --- a/config/locales/activerecord.he.yml +++ b/config/locales/activerecord.he.yml @@ -20,7 +20,6 @@ he: invalid: אינו שם מתחם קביל messages: invalid_domain_on_line: "%{value} אינו שם מתחם קביל" - too_many_lines: מעבר למגבלה של %{limit} שורות models: account: attributes: diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index b26d1afbe3..b0ac003e9d 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -20,7 +20,6 @@ hu: invalid: nem egy érvényes domain név messages: invalid_domain_on_line: "%{value} nem egy érvényes domain név" - too_many_lines: túllépi a(z) %{limit} soros korlátot models: account: attributes: diff --git a/config/locales/activerecord.ia.yml b/config/locales/activerecord.ia.yml index 35b28a19aa..b4cc349c08 100644 --- a/config/locales/activerecord.ia.yml +++ b/config/locales/activerecord.ia.yml @@ -20,7 +20,6 @@ ia: invalid: non es un nomine de dominio valide messages: invalid_domain_on_line: "%{value} non es un nomine de dominio valide" - too_many_lines: il es ultra le limite de %{limit} lineas models: account: attributes: diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml index 2b0d509198..8663c67218 100644 --- a/config/locales/activerecord.io.yml +++ b/config/locales/activerecord.io.yml @@ -20,7 +20,6 @@ io: invalid: ne esas valida domennomo messages: invalid_domain_on_line: "%{value} ne esas valida domennomo" - too_many_lines: esas plu kam la limito qua esas %{limit} linei models: account: attributes: diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index 966d8fa9e8..2f4801ac9c 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -20,7 +20,6 @@ is: invalid: er ekki leyfilegt nafn á léni messages: invalid_domain_on_line: "%{value} er ekki leyfilegt nafn á léni" - too_many_lines: er yfir takmörkum á %{limit} línum models: account: attributes: diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index 6db643408c..2b408f548e 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -20,7 +20,6 @@ it: invalid: non è un nome di dominio valido messages: invalid_domain_on_line: "%{value} non è un nome di dominio valido" - too_many_lines: è oltre il limite di %{limit} righe models: account: attributes: diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index 90bbd795a1..42a107a31c 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -20,7 +20,6 @@ ja: invalid: 有効なドメイン名ではありません messages: invalid_domain_on_line: "%{value} は有効なドメイン名ではありません" - too_many_lines: "%{limit} 行の制限を超えています。" models: account: attributes: diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml index 80bc19f7ad..5dbd2e3d78 100644 --- a/config/locales/activerecord.ko.yml +++ b/config/locales/activerecord.ko.yml @@ -20,7 +20,6 @@ ko: invalid: 올바른 도메인 네임이 아닙니다 messages: invalid_domain_on_line: "%{value}는 올바른 도메인 네임이 아닙니다" - too_many_lines: "%{limit}줄 제한을 초과합니다" models: account: attributes: diff --git a/config/locales/activerecord.lt.yml b/config/locales/activerecord.lt.yml index 5171249d57..4f94a38082 100644 --- a/config/locales/activerecord.lt.yml +++ b/config/locales/activerecord.lt.yml @@ -20,7 +20,6 @@ lt: invalid: nėra tinkamas domeno vardas. messages: invalid_domain_on_line: "%{value} nėra tinkamas domeno vardas." - too_many_lines: yra daugiau nei %{limit} eilučių ribojimą. models: account: attributes: diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml index 3fb928c89c..6d912bd628 100644 --- a/config/locales/activerecord.lv.yml +++ b/config/locales/activerecord.lv.yml @@ -20,7 +20,6 @@ lv: invalid: nav derīgs domēna nosaukums messages: invalid_domain_on_line: "%{value} nav derīgs domēna nosaukums" - too_many_lines: pārsniedz %{limit} līniju ierobežojumu models: account: attributes: diff --git a/config/locales/activerecord.ml.yml b/config/locales/activerecord.ml.yml index 90c5b38ad5..3c8cf67695 100644 --- a/config/locales/activerecord.ml.yml +++ b/config/locales/activerecord.ml.yml @@ -20,7 +20,6 @@ ml: invalid: ഇതൊരു തെറ്റിയ മേഖലപേരാണു് messages: invalid_domain_on_line: "%{value} ഒരു തെറ്റിയ മേഖലപേരാണു്" - too_many_lines: ഇതു് %{limit} വരിയതിരിന്റെ മേലെയാണു് models: account: attributes: diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml index 530e7187d4..447601f0c6 100644 --- a/config/locales/activerecord.nl.yml +++ b/config/locales/activerecord.nl.yml @@ -20,7 +20,6 @@ nl: invalid: is een ongeldige domeinnaam messages: invalid_domain_on_line: "%{value} is een ongeldige domeinnaam" - too_many_lines: overschrijdt de limiet van %{limit} regels models: account: attributes: diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml index 2b5b6dd581..f47bafe0b7 100644 --- a/config/locales/activerecord.nn.yml +++ b/config/locales/activerecord.nn.yml @@ -20,7 +20,6 @@ nn: invalid: er ikkje eit gyldig domenenamn messages: invalid_domain_on_line: "%{value} er ikkje gyldig i eit domenenamn" - too_many_lines: er over grensa på %{limit} liner models: account: attributes: diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index 58f2b9ac14..06b3587008 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -20,7 +20,6 @@ pl: invalid: nie jest prawidłową nazwą domeny messages: invalid_domain_on_line: "%{value} nie jest prawidłową nazwą domeny" - too_many_lines: przekracza limit %{limit} linii models: account: attributes: diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index 9e6ef96364..fde744bed6 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -20,7 +20,6 @@ pt-BR: invalid: não é um nome de domínio válido messages: invalid_domain_on_line: "%{value} não é um nome de domínio válido" - too_many_lines: está acima do limite de %{limit} linhas models: account: attributes: diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml index ecbfab3dc4..274a2bf01f 100644 --- a/config/locales/activerecord.pt-PT.yml +++ b/config/locales/activerecord.pt-PT.yml @@ -20,7 +20,6 @@ pt-PT: invalid: não é um nome de domínio válido messages: invalid_domain_on_line: "%{value} não é um nome de domínio válido" - too_many_lines: está acima do limite de %{limit} linhas models: account: attributes: diff --git a/config/locales/activerecord.ro.yml b/config/locales/activerecord.ro.yml index fa8b206448..9f21282ca6 100644 --- a/config/locales/activerecord.ro.yml +++ b/config/locales/activerecord.ro.yml @@ -20,7 +20,6 @@ ro: invalid: nu este un nume de domeniu valid messages: invalid_domain_on_line: "%{value} nu este un nume de domeniu valid" - too_many_lines: este peste limita de %{limit} linii models: account: attributes: diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index b49a135618..8769212d52 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -20,7 +20,6 @@ ru: invalid: не является действующим доменным именем messages: invalid_domain_on_line: "%{value} Не является действительным доменным именем" - too_many_lines: Превышает предел %{limit} строк models: account: attributes: diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index 7e53b36b87..8c22f2e0fb 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -20,7 +20,6 @@ sq: invalid: s’është emër i vlefshëm përkatësie messages: invalid_domain_on_line: "%{value} s’është emër i vlefshëm përkatësie" - too_many_lines: është tej kufirit prej %{limit} rreshta models: account: attributes: diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index bf1ef22f3d..db488200df 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -20,7 +20,6 @@ sv: invalid: är inte ett giltigt domännamn messages: invalid_domain_on_line: "%{value} Är inte ett giltigt domännamn" - too_many_lines: överskrider gränsen på %{limit} rader models: account: attributes: diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 6575d30a22..e8a0a37cff 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -20,7 +20,6 @@ th: invalid: ไม่ใช่ชื่อโดเมนที่ถูกต้อง messages: invalid_domain_on_line: "%{value} ไม่ใช่ชื่อโดเมนที่ถูกต้อง" - too_many_lines: เกินขีดจำกัด %{limit} บรรทัด models: account: attributes: diff --git a/config/locales/activerecord.tok.yml b/config/locales/activerecord.tok.yml index c0004f12ac..9a6f9e5875 100644 --- a/config/locales/activerecord.tok.yml +++ b/config/locales/activerecord.tok.yml @@ -20,7 +20,6 @@ tok: invalid: li nimi ilo ike messages: invalid_domain_on_line: nimi "%{value}" li nimi ilo ike - too_many_lines: la %{limit} o mute nanpa wan pi linja sitelen models: account: attributes: diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index 4795e629fb..0b0c34fb82 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -20,7 +20,6 @@ tr: invalid: geçerli bir alan adı değil messages: invalid_domain_on_line: "%{value} geçerli bir alan adı değil" - too_many_lines: "%{limit} satır sınırının üzerinde" models: account: attributes: diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 3e82b5ac3d..1ee426ae45 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -20,7 +20,6 @@ uk: invalid: не є дійсним іменем домену messages: invalid_domain_on_line: "%{value} не є дійсним іменем домену" - too_many_lines: перевищує ліміт %{limit} рядків models: account: attributes: diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index 16f106a8bb..8e9e6679c4 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -20,7 +20,6 @@ vi: invalid: không phải là một tên miền hợp lệ messages: invalid_domain_on_line: "%{value} không phải là một tên miền hợp lệ" - too_many_lines: vượt quá giới hạn %{limit} dòng models: account: attributes: diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index 262b8c5e77..7be8621f1f 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -20,10 +20,11 @@ zh-CN: invalid: 不是有效的域名 messages: invalid_domain_on_line: "%{value} 不是有效的域名" - too_many_lines: 超出 %{limit} 行的长度限制 models: account: attributes: + fields: + fields_with_values_missing_labels: 包含缺失标签的值 username: invalid: 只能使用字母、数字和下划线 reserved: 是保留关键字 @@ -43,7 +44,7 @@ zh-CN: attributes: account_id: taken: 已经被加入到列表了 - must_be_following: 需要是你关注的账户 + must_be_following: 需要是你关注的账号 status: attributes: reblog: @@ -58,7 +59,7 @@ zh-CN: user_role: attributes: permissions_as_keys: - dangerous: 包含对基本角色而言不安全的权限 + dangerous: 包含对基本角色不安全的权限 elevated: 不能包含你当前身份未有的权限 own_role: 你当前的角色无权执行此更改 position: diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index 29c2c86af0..58b703b531 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -20,7 +20,6 @@ zh-TW: invalid: 並非一個有效網域 messages: invalid_domain_on_line: "%{value} 並非一個有效網域" - too_many_lines: 已超過行數限制 (%{limit} 行) models: account: attributes: diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 77d8a404dc..c96c4afdcc 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -7,12 +7,12 @@ zh-CN: send_paranoid_instructions: 如果你的邮箱地址存在于我们的数据库中,你将在几分钟内收到一封邮件,内含如何验证邮箱地址的指引。如果你没有收到这封邮件,请检查你的垃圾邮件文件夹。 failure: already_authenticated: 你已登录。 - inactive: 你还没有激活账户。 + inactive: 你还没有激活账号。 invalid: "%{authentication_keys} 无效或密码错误。" last_attempt: 你只有最后一次尝试机会,若未通过,账号将被锁定。 - locked: 你的账户已被锁定。 + locked: 你的账号已被锁定。 not_found_in_database: "%{authentication_keys}或密码错误。" - omniauth_user_creation_failure: 为此身份创建账户时出错。 + omniauth_user_creation_failure: 为此身份创建账号时出错。 pending: 你的账号仍在审核中。 timeout: 你的会话已过期。请重新登录再继续操作。 unauthenticated: 继续操作前请注册或者登录。 @@ -28,34 +28,34 @@ zh-CN: title: 验证邮箱地址 email_changed: explanation: 你的账号的邮箱地址将变更为: - extra: 如果你并没有请求更改你的邮箱地址,则他人很有可能已经入侵你的账户。请立即更改你的密码,或者,如果你已经无法访问你的账户,请联系服务器管理员请求协助。 + extra: 如果你并没有请求更改你的邮箱地址,则他人很有可能已经入侵你的账号。请立即更改你的密码,或者,如果你已经无法访问你的账号,请联系服务器管理员请求协助。 subject: Mastodon:邮箱地址已被更改 title: 新邮箱地址 password_change: - explanation: 你的账户密码已更改。 - extra: 如果你并没有申请更改密码,那似乎有人已经入侵你的账户。请立即更改你的密码;如果你已经无法访问你的账户,请联系服务器的管理员获取帮助。 + explanation: 你的账号密码已更改。 + extra: 如果你并没有申请更改密码,那似乎有人已经入侵你的账号。请立即更改你的密码;如果你已经无法访问你的账号,请联系服务器的管理员获取帮助。 subject: Mastodon:密码已被更改 title: 密码已被重置 reconfirmation_instructions: explanation: 点击下面的链接来确认你的新邮箱地址。 - extra: 如果你并没有请求本次更改,请忽略此邮件。Mastodon 账户的邮箱地址只有在你点击上面的链接后才会更改。 + extra: 如果你并没有请求本次更改,请忽略此邮件。Mastodon 账号的邮箱地址只有在你点击上面的链接后才会更改。 subject: Mastodon:确认 %{instance} 电子邮箱地址 title: 验证邮箱地址 reset_password_instructions: action: 更改密码 - explanation: 点击下面的链接来更改账户的密码。 + explanation: 点击下面的链接来更改账号的密码。 extra: 如果你并没有请求本次变更,请忽略此邮件。你的密码只有在你点击上面的链接并输入新密码后才会更改。 subject: Mastodon:重置密码说明 title: 重置密码 two_factor_disabled: explanation: 目前只能通过邮箱地址和密码登录。 subject: Mastodon:双因素认证已禁用 - subtitle: 你账户的双因素认证已被停用。 + subtitle: 你账号的双因素认证已被停用。 title: 双因素认证已停用 two_factor_enabled: explanation: 登录时需要输入先前配对好的TOTP应用生成的令牌。 subject: Mastodon:双因素认证已启用 - subtitle: 你账户的双因素认证已被启用。 + subtitle: 你账号的双因素认证已被启用。 title: 双因素认证已启用 two_factor_recovery_codes_changed: explanation: 新恢复码已生成,同时旧恢复码已失效。 @@ -63,23 +63,23 @@ zh-CN: subtitle: 新恢复码已生成,同时旧恢复码已失效。 title: 双因素认证恢复码已更改 unlock_instructions: - subject: Mastodon:账户解锁信息 + subject: Mastodon:账号解锁信息 webauthn_credential: added: - explanation: 以下安全密钥已添加到你的账户 + explanation: 以下安全密钥已添加到你的账号 subject: Mastodon:新的安全密钥 title: 已添加一个新的安全密钥 deleted: - explanation: 以下安全密钥已从你的账户中删除 + explanation: 以下安全密钥已从你的账号中删除 subject: Mastodon:安全密钥已删除 title: 你的安全密钥之一已被删除 webauthn_disabled: - explanation: 你账户的安全密钥身份认证已被停用。 + explanation: 你账号的安全密钥身份认证已被停用。 extra: 目前只能用先前配对的TOTP应用生成的令牌登录。 subject: Mastodon:安全密钥认证已禁用 title: 安全密钥已禁用 webauthn_enabled: - explanation: 你账户的安全密钥身份认证已被启用。 + explanation: 你账号的安全密钥身份认证已被启用。 extra: 你的安全密钥现在可用于登录。 subject: Mastodon:安全密钥认证已启用 title: 已启用安全密钥 @@ -93,17 +93,17 @@ zh-CN: updated: 你的密码已成功修改,现在你已登录。 updated_not_active: 你的密码已修改成功。 registrations: - destroyed: 再见!你的账户已成功注销。我们希望很快可以再见到你。 + destroyed: 再见!你的账号已成功注销。我们希望很快可以再见到你。 update_needs_confirmation: 账号信息更新成功,但我们需要验证你的新邮箱地址,请点击邮件中的链接以确认。如果没有收到邮件,请检查你的垃圾邮件文件夹。 - updated: 账户资料更新成功。 + updated: 账号资料更新成功。 sessions: already_signed_out: 已成功退出登录。 signed_in: 已成功登录。 signed_out: 已成功退出登录。 unlocks: - send_instructions: 几分钟后,你将收到一封解锁账户的邮件。如果没有,请检查你的垃圾邮箱。 + send_instructions: 几分钟后,你将收到一封解锁账号的邮件。如果没有,请检查你的垃圾邮箱。 send_paranoid_instructions: 如果你的账号存在,你将会在几分钟内收到一封指引你如何解锁账号的邮件。如果你没有收到这封邮件,请检查你邮箱的垃圾箱。 - unlocked: 你的账户已成功解锁。登录以继续。 + unlocked: 你的账号已成功解锁。登录以继续。 errors: messages: already_confirmed: 已经成功确认,请尝试登录 diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml index bccb26d5bf..256ecbb776 100644 --- a/config/locales/doorkeeper.zh-CN.yml +++ b/config/locales/doorkeeper.zh-CN.yml @@ -60,7 +60,7 @@ zh-CN: error: title: 发生错误 new: - prompt_html: "%{client_name} 请求获得访问你账户的权限。 请在确保自己了解并信任此来源后再批准该请求。" + prompt_html: "%{client_name} 请求获得访问你账号的权限。 请在确保自己了解并信任此来源后再批准该请求。" review_permissions: 检查权限 title: 需要授权 show: @@ -123,7 +123,7 @@ zh-CN: admin/accounts: 账号管理 admin/all: 所有管理功能 admin/reports: 举报管理 - all: 完全访问你的Mastodon账户 + all: 完全访问你的Mastodon账号 blocks: 屏蔽 bookmarks: 收藏 conversations: 会话 @@ -167,12 +167,12 @@ zh-CN: admin:write:reports: 对举报执行管理操作 crypto: 使用端到端加密 follow: 关注或屏蔽用户 - profile: 仅读取你账户的个人资料信息 - push: 接收你的账户的推送通知 - read: 读取你的账户数据 + profile: 仅读取你账号的个人资料信息 + push: 接收你的账号的推送通知 + read: 读取你的账号数据 read:accounts: 查看账号信息 read:blocks: 查看你的屏蔽列表 - read:bookmarks: 查看你的收藏夹 + read:bookmarks: 查看你的书签 read:favourites: 查看喜欢的嘟文 read:filters: 查看你的过滤规则 read:follows: 查看你的关注 @@ -184,7 +184,7 @@ zh-CN: read:statuses: 查看所有嘟文 write: 修改你的账号数据 write:accounts: 修改你的个人资料 - write:blocks: 屏蔽账户与站点 + write:blocks: 屏蔽账号与站点 write:bookmarks: 收藏嘟文 write:conversations: 静音并删除会话 write:favourites: 喜欢嘟文 diff --git a/config/locales/ia.yml b/config/locales/ia.yml index e534362182..f42271d16c 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -164,7 +164,7 @@ ia: undo_silenced: Disfacer le limite undo_suspension: Disfacer le suspension unsilenced_msg: Le limite del conto de %{username} ha essite cancellate - unsubscribe: Desubscriber + unsubscribe: Cancellar subscription unsuspended_msg: Le suspension del conto %{username} ha essite annullate username: Nomine de usator view_domain: Vider summario de dominio @@ -1117,7 +1117,7 @@ ia: notification_preferences: Cambiar preferentias de e-mail salutation: "%{name}," settings: 'Cambiar preferentias de e-mail: %{link}' - unsubscribe: Desubscriber + unsubscribe: Cancellar subscription view: 'Visita:' view_profile: Vider profilo view_status: Vider message @@ -1519,7 +1519,7 @@ ia: title: Historia de authentication mail_subscriptions: unsubscribe: - action: Si, desubscriber + action: Si, cancellar subscription complete: Desubscribite confirmation_html: Es tu secur de voler cancellar le subscription al %{type} de Mastodon sur %{domain} pro tu adresse de e-mail %{email}? Tu pote sempre resubscriber te a partir del parametros de notification in e-mail. emails: diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 68386eded6..a903a3be06 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -3,7 +3,6 @@ bg: simple_form: hints: account: - attribution_domains_as_text: Едно на ред. Защитава от фалшиви атрибути. discoverable: Вашите публични публикации и профил може да се представят или препоръчват в различни области на Mastodon и вашия профил може да се предлага на други потребители. display_name: Вашето пълно име или псевдоним. fields: Вашата начална страница, местоимения, години, всичко що искате. @@ -150,7 +149,6 @@ bg: url: До къде ще се изпращат събитията labels: account: - attribution_domains_as_text: Уебсайтове, на които е позволено да приписват авторството ви discoverable: Включване на профил и публикации в алгоритмите за откриване fields: name: Етикет diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 58cc0a034c..c908d07479 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -3,7 +3,6 @@ ca: simple_form: hints: account: - attribution_domains_as_text: Un per línia. Protegeix de falses atribucions. discoverable: El teu perfil i els teus tuts públics poden aparèixer o ser recomanats en diverses àreas de Mastodon i el teu perfil pot ser suggerit a altres usuaris. display_name: El teu nom complet o el teu nom divertit. fields: La teva pàgina d'inici, pronoms, edat, el que vulguis. @@ -148,7 +147,6 @@ ca: url: On els esdeveniments seran enviats labels: account: - attribution_domains_as_text: Webs que us poden donar crèdit discoverable: Permet el perfil i el tuts en els algorismes de descobriment fields: name: Etiqueta diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 22b92a4434..515c7fb9e8 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -3,7 +3,6 @@ cs: simple_form: hints: account: - attribution_domains_as_text: Jeden na řádek. Chrání před falešným připisování autorství. discoverable: Vaše veřejné příspěvky a profil mohou být zobrazeny nebo doporučeny v různých oblastech Mastodonu a váš profil může být navrhován ostatním uživatelům. display_name: Vaše celé jméno nebo přezdívka. fields: Vaše domovská stránka, zájmena, věk, cokoliv chcete. @@ -156,7 +155,6 @@ cs: url: Kam budou události odesílány labels: account: - attribution_domains_as_text: Webové stránky s povolením Vám připsat autorství discoverable: Zobrazovat profil a příspěvky ve vyhledávacích algoritmech fields: name: Označení diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index d5a785e387..1220ceabf3 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -3,7 +3,6 @@ cy: simple_form: hints: account: - attribution_domains_as_text: Un i bob llinell. Yn amddiffyn rhag priodoli ffug. discoverable: Mae'n bosibl y bydd eich postiadau cyhoeddus a'ch proffil yn cael sylw neu'n cael eu hargymell mewn gwahanol feysydd o Mastodon ac efallai y bydd eich proffil yn cael ei awgrymu i ddefnyddwyr eraill. display_name: Eich enw llawn neu'ch enw hwyl. fields: Eich tudalen cartref, rhagenwau, oed, neu unrhyw beth. @@ -156,7 +155,6 @@ cy: url: I ble bydd digwyddiadau'n cael eu hanfon labels: account: - attribution_domains_as_text: Gwefannau sy'n cael caniatâd i'ch cydnabod chi discoverable: Proffil nodwedd a phostiadau mewn algorithmau darganfod fields: name: Label diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 0ef8232dda..cc51bb7603 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -3,7 +3,6 @@ da: simple_form: hints: account: - attribution_domains_as_text: Ét pr. linje. Beskytter mod falske tilskrivninger. discoverable: Dine offentlige indlæg og profil kan blive fremhævet eller anbefalet i forskellige områder af Mastodon, og profilen kan blive foreslået til andre brugere. display_name: Dit fulde navn eller dit sjove navn. fields: Din hjemmeside, dine pronominer, din alder, eller hvad du har lyst til. @@ -156,7 +155,6 @@ da: url: Hvor begivenheder sendes til labels: account: - attribution_domains_as_text: Websteder, man må krediteres af discoverable: Fremhæv profil og indlæg i opdagelsesalgoritmer fields: name: Etiket diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index ea0681e1af..3a66001da5 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -3,7 +3,6 @@ de: simple_form: hints: account: - attribution_domains_as_text: Eine Domain pro Zeile. Dadurch können falsche Zuschreibungen unterbunden werden. discoverable: Deine öffentlichen Beiträge und dein Profil können in verschiedenen Bereichen auf Mastodon angezeigt oder empfohlen werden und dein Profil kann anderen vorgeschlagen werden. display_name: Dein richtiger Name oder dein Fantasiename. fields: Deine Website, Pronomen, dein Alter – alles, was du möchtest. @@ -156,7 +155,6 @@ de: url: Wohin Ereignisse gesendet werden labels: account: - attribution_domains_as_text: Websites, die auf dich verweisen dürfen discoverable: Profil und Beiträge in Suchalgorithmen berücksichtigen fields: name: Beschriftung diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index c729bef20b..e06cf7069d 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -3,7 +3,6 @@ el: simple_form: hints: account: - attribution_domains_as_text: Μία ανά γραμμή. Προστατεύει από ψευδείς ιδιότητες. discoverable: Οι δημόσιες δημοσιεύσεις και το προφίλ σου μπορεί να εμφανίζονται ή να συνιστώνται σε διάφορους τομείς του Mastodon και το προφίλ σου μπορεί να προτείνεται σε άλλους χρήστες. display_name: Το πλήρες ή το αστείο σου όνομα. fields: Η αρχική σου σελίδα, αντωνυμίες, ηλικία, ό,τι θες. @@ -155,7 +154,6 @@ el: url: Πού θα σταλούν τα γεγονότα labels: account: - attribution_domains_as_text: Ιστοσελίδες που επιτρέπεται να σου δώσουν εύσημα discoverable: Παροχή προφίλ και αναρτήσεων σε αλγορίθμους ανακάλυψης fields: name: Περιγραφή diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index aa1184a02f..6539cacb80 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -3,7 +3,6 @@ en-GB: simple_form: hints: account: - attribution_domains_as_text: One per line. Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -144,7 +143,6 @@ en-GB: url: Where events will be sent to labels: account: - attribution_domains_as_text: Websites allowed to credit you discoverable: Feature profile and posts in discovery algorithms fields: name: Label diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 3a052ad626..696ccd35dc 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -3,7 +3,7 @@ en: simple_form: hints: account: - attribution_domains_as_text: One per line. Protects from false attributions. + attribution_domains: One per line. Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -156,7 +156,7 @@ en: url: Where events will be sent to labels: account: - attribution_domains_as_text: Websites allowed to credit you + attribution_domains: Websites allowed to credit you discoverable: Feature profile and posts in discovery algorithms fields: name: Label diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 59fad146d4..5de006231a 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -3,7 +3,6 @@ eo: simple_form: hints: account: - attribution_domains_as_text: Unu por linio. Protektas kontraŭ falsaj atribuoj. discoverable: Viaj publikaj afiŝoj kaj profilo povas esti prezentitaj aŭ rekomenditaj en diversaj lokoj de Mastodon kaj via profilo povas esti proponita al aliaj uzantoj. display_name: Via plena nomo aŭ via kromnomo. fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas. @@ -156,7 +155,6 @@ eo: url: Kien eventoj sendotas labels: account: - attribution_domains_as_text: Retejoj permesitaj krediti vin discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj fields: name: Etikedo diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 74fcce8239..2abefdcab6 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -3,7 +3,6 @@ es-AR: simple_form: hints: account: - attribution_domains_as_text: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones pueden ser destacadas o recomendadas en varias áreas de Mastodon, y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu pseudónimo. fields: Tu sitio web, pronombres, edad, o lo que quieras. @@ -156,7 +155,6 @@ es-AR: url: Adónde serán enviados los eventos labels: account: - attribution_domains_as_text: Sitios web autorizados a acreditarte discoverable: Destacar perfil y mensajes en algoritmos de descubrimiento fields: name: Nombre de campo diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 8dc1c4a3a6..e2f6627c96 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -3,7 +3,6 @@ es-MX: simple_form: hints: account: - attribution_domains_as_text: Uno por línea. Protege contra atribuciones falsas. discoverable: Tu perfil y las publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu página de inicio, pronombres, edad, lo que quieras. @@ -156,7 +155,6 @@ es-MX: url: Donde los eventos serán enviados labels: account: - attribution_domains_as_text: Sitios web autorizados para acreditarte discoverable: Destacar el perfil y las publicaciones en el algoritmo de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 77cd04cfd0..7cdbea902f 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -3,7 +3,6 @@ es: simple_form: hints: account: - attribution_domains_as_text: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu carta de presentación, pronombres, edad, lo que quieras. @@ -156,7 +155,6 @@ es: url: Donde los eventos serán enviados labels: account: - attribution_domains_as_text: Sitios web autorizados a acreditarte discoverable: Destacar perfil y publicaciones en algoritmos de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index 2f421b97b5..1eda0ec67b 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -3,7 +3,6 @@ et: simple_form: hints: account: - attribution_domains_as_text: Üks rea peal. See kaitseb pahatahtlike viidete eest. discoverable: Su profiili ja avalikke postitusi võidakse Mastodoni erinevates piirkondades esile tõsta või soovitada ning su profiili soovitada teistele kasutajatele. display_name: Su täisnimi või naljanimi. fields: Su koduleht, sugu, vanus. Mistahes, mida soovid. @@ -146,7 +145,6 @@ et: url: Kuhu sündmused saadetakse labels: account: - attribution_domains_as_text: Sinule viidata lubatud veebilehed discoverable: Tõsta postitused ja profiil avastamise algoritmides esile fields: name: Nimetus diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 4e37be05d0..7aaa146f31 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -3,7 +3,6 @@ fa: simple_form: hints: account: - attribution_domains_as_text: یکی در هر خط. محافظت از اعتباردهی‌های اشتباه. discoverable: ممکن است نمایه و فرسته‌های عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایه‌تان به دیگر کاربران پیشنهاد شود. display_name: نام کامل یا باحالتان. fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید. @@ -156,7 +155,6 @@ fa: url: جایی که رویدادها فرستاده می‌شوند labels: account: - attribution_domains_as_text: پابگاه‌های وبی که اجازهٔ اعتبار دهی به شما را دارند discoverable: مشخص کردن مشخصات و فرسته‌ها در الگوریتم‌های اکتشاف fields: name: برچسب diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index acd1eefca6..1103232f4e 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -3,7 +3,6 @@ fi: simple_form: hints: account: - attribution_domains_as_text: Yksi riviä kohti. Suojaa vääriltä tunnustuksilta. discoverable: Julkisia julkaisujasi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla ja profiiliasi voidaan ehdottaa toisille käyttäjille. display_name: Koko nimesi tai lempinimesi. fields: Verkkosivustosi, pronominisi, ikäsi ja mitä ikinä haluatkaan ilmoittaa. @@ -156,7 +155,6 @@ fi: url: Mihin tapahtumat lähetetään labels: account: - attribution_domains_as_text: Verkkosivustot, jotka voivat antaa sinulle tunnustusta discoverable: Pidä profiiliasi ja julkaisujasi esillä löytämisalgoritmeissa fields: name: Nimike diff --git a/config/locales/simple_form.fo.yml b/config/locales/simple_form.fo.yml index 99bb1ccaa0..a3b7a56729 100644 --- a/config/locales/simple_form.fo.yml +++ b/config/locales/simple_form.fo.yml @@ -3,7 +3,6 @@ fo: simple_form: hints: account: - attribution_domains_as_text: Eitt á hvørja reglu. Tað verjir fyri skeivum tilsipingum. discoverable: Tínir almennu postar og tín vangi kunnu vera drigin fram og viðmæld ymsa staðni í Mastodon og vangin hjá tær kann vera viðmæltur øðrum brúkarum. display_name: Títt fulla navn og títt stuttliga navn. fields: Heimasíðan hjá tær, fornøvn, aldur ella hvat tú vil. @@ -156,7 +155,6 @@ fo: url: Hvar hendingar verða sendar til labels: account: - attribution_domains_as_text: Heimasíður, sum hava loyvi at sipa til tín discoverable: Framheva vanga og postar í uppdagingar-algoritmum fields: name: Spjaldur diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index 4f89eec5e6..01893eefc9 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -3,7 +3,6 @@ fr-CA: simple_form: hints: account: - attribution_domains_as_text: Un par ligne. Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom cool. fields: Votre page d'accueil, pronoms, âge, tout ce que vous voulez. @@ -156,7 +155,6 @@ fr-CA: url: Là où les événements seront envoyés labels: account: - attribution_domains_as_text: Sites web autorisés à vous citer discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 62dd23f930..9332c5d606 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,7 +3,6 @@ fr: simple_form: hints: account: - attribution_domains_as_text: Un par ligne. Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom rigolo. fields: Votre page personnelle, vos pronoms, votre âge, ce que vous voulez. @@ -156,7 +155,6 @@ fr: url: Là où les événements seront envoyés labels: account: - attribution_domains_as_text: Sites web autorisés à vous citer discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index 3c8fef4e05..52ef178aec 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -3,7 +3,6 @@ fy: simple_form: hints: account: - attribution_domains_as_text: Ien per rigel. Beskermet tsjin falske attribúsjes. discoverable: Jo iepenbiere berjochten kinne útljochte wurde op ferskate plakken binnen Mastodon en jo account kin oanrekommandearre wurde oan oare brûkers. display_name: Jo folsleine namme of in aardige bynamme. fields: Jo website, persoanlike foarnammewurden, leeftiid, alles wat jo mar kwyt wolle. @@ -156,7 +155,6 @@ fy: url: Wêr’t eveneminten nei ta stjoerd wurde labels: account: - attribution_domains_as_text: Websites dy’t jo wurdearring jaan meie discoverable: Profyl en bydragen yn sykalgoritmen opnimme litte fields: name: Label diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 02b2942b5d..93eff4a89d 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -3,7 +3,6 @@ ga: simple_form: hints: account: - attribution_domains_as_text: Ceann in aghaidh an líne. Cosnaíonn sé ó sannadh bréagach. discoverable: Seans go mbeidh do phostálacha poiblí agus do phróifíl le feiceáil nó molta i réimsí éagsúla de Mastodon agus is féidir do phróifíl a mholadh d’úsáideoirí eile. display_name: D'ainm iomlán nó d'ainm spraoi. fields: Do leathanach baile, forainmneacha, aois, rud ar bith is mian leat. @@ -156,7 +155,6 @@ ga: url: An áit a seolfar imeachtaí chuig labels: account: - attribution_domains_as_text: Tá cead ag suíomhanna Gréasáin creidmheas a thabhairt duit discoverable: Próifíl gné agus postálacha in halgartaim fionnachtana fields: name: Lipéad diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 4c3a297738..bb05294cfb 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -3,7 +3,6 @@ gd: simple_form: hints: account: - attribution_domains_as_text: Loidhne fa leth do gach fear. Dìonaidh seo o iomraidhean meallta. discoverable: Dh’fhaoidte gun dèid na postaichean poblach ’s a’ phròifil agad a bhrosnachadh no a mholadh ann an caochladh roinnean de Mhastodon agus gun dèid a’ phròifil agad a mholadh do chàch. display_name: D’ ainm slàn no spòrsail. fields: An duilleag-dhachaigh agad, roimhearan, aois, rud sam bith a thogras tu. @@ -144,7 +143,6 @@ gd: url: Far an dèid na tachartasan a chur labels: account: - attribution_domains_as_text: Na làraichean-lìn a dh’fhaodas iomradh a thoirt ort discoverable: Brosnaich a’ phròifil is postaichean agad sna h-algairimean rùrachaidh fields: name: Leubail diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 6fdbe06d06..ec7786f509 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -3,7 +3,6 @@ gl: simple_form: hints: account: - attribution_domains_as_text: Un por liña. Protéxete das atribucións falsas. discoverable: As túas publicacións públicas e perfil poden mostrarse ou recomendarse en varias zonas de Mastodon e o teu perfil ser suxerido a outras usuarias. display_name: O teu nome completo ou un nome divertido. fields: Páxina web, pronome, idade, o que ti queiras. @@ -156,7 +155,6 @@ gl: url: A onde se enviarán os eventos labels: account: - attribution_domains_as_text: Sitios web que poden acreditarte discoverable: Perfil destacado e publicacións nos algoritmos de descubrimento fields: name: Etiqueta diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 85e8cbc53e..2699f5e962 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -3,7 +3,6 @@ he: simple_form: hints: account: - attribution_domains_as_text: אחד בכל שורה. יגן מפני יחוס מטעה. discoverable: הפוסטים והפרופיל שלך עשויים להיות מוצגים או מומלצים באזורים שונים באתר וייתכן שהפרופיל שלך יוצע למשתמשים אחרים. display_name: שמך המלא או שם הכיף שלך. fields: עמוד הבית שלך, לשון הפנייה, גיל, וכל מידע אחר לפי העדפתך האישית. @@ -156,7 +155,6 @@ he: url: היעד שאליו יישלחו אירועים labels: account: - attribution_domains_as_text: אתרים המורשים לייחס אליך מאמרים discoverable: הצג משתמש ופוסטים בעמוד התגליות fields: name: תווית diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 8a0f867f14..cc9fa61abf 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -3,7 +3,6 @@ hu: simple_form: hints: account: - attribution_domains_as_text: Megvéd a hamis forrásmegjelölésektől. discoverable: A nyilvános bejegyzéseid és a profilod kiemelhető vagy ajánlható a Mastodon különböző területein, a profilod más felhasználóknak is javasolható. display_name: Teljes neved vagy vicces neved. fields: Weboldalad, megszólításaid, korod, bármi, amit szeretnél. @@ -153,7 +152,6 @@ hu: url: Ahová az eseményket küldjük labels: account: - attribution_domains_as_text: Weboldalak, melyek szerzőként tüntethetnek fel discoverable: Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban fields: name: Címke diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml index 585e84f490..bcab4f9d80 100644 --- a/config/locales/simple_form.ia.yml +++ b/config/locales/simple_form.ia.yml @@ -3,7 +3,6 @@ ia: simple_form: hints: account: - attribution_domains_as_text: Un per linea. Protege contra false attributiones. discoverable: Tu messages public e tu profilo pote esser mittite in evidentia o recommendate in varie areas de Mastodon e tu profilo pote esser suggerite a altere usatores. display_name: Tu prenomine e nomine de familia o tu pseudonymo. fields: Tu pagina principal, pronomines, etate, tote lo que tu vole. @@ -156,7 +155,6 @@ ia: url: Ubi le eventos essera inviate labels: account: - attribution_domains_as_text: Sitos web autorisate a accreditar te discoverable: Evidentiar le profilo e messages in le algorithmos de discoperta fields: name: Etiquetta diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 1348fa4e9f..f0232602bb 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -3,7 +3,6 @@ is: simple_form: hints: account: - attribution_domains_as_text: Eitt á hverja línu. Ver fyrir röngum tilvísunum. discoverable: Opinberar færslur og notandasnið þitt geta birst eða verið mælt með á hinum ýmsu svæðum í Mastodon auk þess sem hægt er að mæla með þér við aðra notendur. display_name: Fullt nafn þitt eða eitthvað til gamans. fields: Heimasíðan þín, fornöfn, aldur eða eitthvað sem þú vilt koma á framfæri. @@ -156,7 +155,6 @@ is: url: Hvert atburðir verða sendir labels: account: - attribution_domains_as_text: Vefsvæði sem mega vitna í þig discoverable: Hafa notandasnið og færslur með í reikniritum leitar fields: name: Skýring diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 97565f4b1a..f0448bba4b 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -3,7 +3,6 @@ it: simple_form: hints: account: - attribution_domains_as_text: Uno per riga. Protegge da false attribuzioni. discoverable: I tuoi post pubblici e il tuo profilo potrebbero essere presenti o consigliati in varie aree di Mastodon e il tuo profilo potrebbe essere suggerito ad altri utenti. display_name: Il tuo nome completo o il tuo soprannome. fields: La tua homepage, i pronomi, l'età, tutto quello che vuoi. @@ -156,7 +155,6 @@ it: url: Dove gli eventi saranno inviati labels: account: - attribution_domains_as_text: Siti web autorizzati ad accreditarti discoverable: Include il profilo e i post negli algoritmi di scoperta fields: name: Etichetta diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index ba619dd37b..d827d7b393 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -3,7 +3,6 @@ ja: simple_form: hints: account: - attribution_domains_as_text: 1行につき1つずつ入力してください。この設定は関わりのないwebサイトに対して虚偽の帰属表示が行われることを防止する役割があります。 discoverable: プロフィールと公開投稿をMastodonのおすすめやハイライトとしてほかのユーザーに表示することを許可します。 display_name: フルネーム、ハンドルネームなど fields: ホームページ、代名詞、年齢など何でも構いません。 @@ -156,7 +155,6 @@ ja: url: イベントの送信先 labels: account: - attribution_domains_as_text: あなたの著者表示を許可するwebサイト discoverable: アカウントを見つけやすくする fields: name: ラベル diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 71af0b42fd..d40ca7ebf8 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -3,7 +3,6 @@ ko: simple_form: hints: account: - attribution_domains_as_text: 한 줄에 하나씩. 가짜 기여로부터 보호합니다. discoverable: 내 공개 게시물과 프로필이 마스토돈의 다양한 추천 기능에 나타날 수 있고 프로필이 다른 사용자에게 제안될 수 있습니다 display_name: 진짜 이름 또는 재미난 이름. fields: 홈페이지, 호칭, 나이, 뭐든지 적고 싶은 것들. @@ -151,7 +150,6 @@ ko: url: 이벤트가 어디로 전송될 지 labels: account: - attribution_domains_as_text: 나를 기여자로 올릴 수 있도록 허용된 웹사이트들 discoverable: 발견하기 알고리즘에 프로필과 게시물을 추천하기 fields: name: 라벨 diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index 865272c60e..c7aaeab906 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -3,7 +3,6 @@ lt: simple_form: hints: account: - attribution_domains_as_text: Po vieną eilutėje. Apsaugo nuo klaidingų atributų. discoverable: Tavo vieši įrašai ir profilis gali būti rodomi arba rekomenduojami įvairiose Mastodon vietose, o profilis gali būti siūlomas kitiems naudotojams. display_name: Tavo pilnas vardas arba smagus vardas. fields: Tavo pagrindinis puslapis, įvardžiai, amžius, bet kas, ko tik nori. @@ -119,7 +118,6 @@ lt: role: Vaidmuo valdo, kokius leidimus naudotojas turi. labels: account: - attribution_domains_as_text: Svetainės, kuriuose leidžiama jus nurodyti discoverable: Rekomenduoti profilį ir įrašus į atradimo algoritmus indexable: Įtraukti viešus įrašus į paieškos rezultatus show_collections: Rodyti sekimus ir sekėjus profilyje diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 7c7b11c1b3..85cc38fa9e 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -3,7 +3,6 @@ lv: simple_form: hints: account: - attribution_domains_as_text: Viens katrā līnijā. Aizsargā no nepatiesa attiecinājuma. discoverable: Tavas publiskās ziņas un profils var tikt piedāvāti vai ieteikti dažādās Mastodon vietās, un tavs profils var tikt ieteikts citiem lietotājiem. display_name: Tavs pilnais vārds vai tavs joku vārds. fields: Tava mājas lapa, vietniekvārdi, vecums, viss, ko vēlies. @@ -144,7 +143,6 @@ lv: url: Kur notikumi tiks nosūtīti labels: account: - attribution_domains_as_text: Tīmekļvietnes, kurām ir tiesības uzskaitīt Tevi discoverable: Funkcijas profils un ziņas atklāšanas algoritmos fields: name: Marķējums diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index d5aa5855ec..771dc3d6ed 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -3,7 +3,7 @@ nl: simple_form: hints: account: - attribution_domains_as_text: Eén per regel. Beschermt tegen ongeldige attributies. + attribution_domains: Eén per regel. Beschermt tegen ongeldige attributies. discoverable: Jouw openbare berichten kunnen worden uitgelicht op verschillende plekken binnen Mastodon en jouw account kan worden aanbevolen aan andere gebruikers. display_name: Jouw volledige naam of een leuke bijnaam. fields: Jouw website, persoonlijke voornaamwoorden, leeftijd, alles wat je maar kwijt wilt. @@ -156,7 +156,7 @@ nl: url: Waar gebeurtenissen naartoe worden verzonden labels: account: - attribution_domains_as_text: Websites die jou credit mogen geven + attribution_domains: Websites die jou credit mogen geven discoverable: Jouw account en berichten laten uitlichten door Mastodon fields: name: Label diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 297404e153..b9e30c565d 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -3,7 +3,6 @@ nn: simple_form: hints: account: - attribution_domains_as_text: Ein per line. Vernar mot falske krediteringar. discoverable: Dei offentlege innlegga dine og profilen din kan dukka opp i tilrådingar på ulike stader på Mastodon, og profilen din kan bli føreslegen for andre folk. display_name: Ditt fulle namn eller ditt tøysenamn. fields: Heimesida di, pronomen, alder, eller kva du måtte ynskje. @@ -156,7 +155,6 @@ nn: url: Kvar hendingar skal sendast labels: account: - attribution_domains_as_text: Nettstader som har lov å kreditera deg discoverable: Ta med profilen og innlegga i oppdagingsalgoritmar fields: name: Merkelapp diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 6061ff44dc..d7f3829af2 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -3,7 +3,6 @@ pl: simple_form: hints: account: - attribution_domains_as_text: Jedna na linię. Chroni przed fałszywym przypisaniem wpisów. discoverable: Twój profil i publiczne wpisy mogą być promowane lub polecane na Mastodonie i twój profil może być sugerowany innym użytkownikom. display_name: Twoje imię lub pseudonim. fields: Co ci się tylko podoba – twoja strona domowa, zaimki, wiek… @@ -145,7 +144,6 @@ pl: url: Dokąd będą wysłane zdarzenia labels: account: - attribution_domains_as_text: Strony które mogą ci przypisywać autorstwo. discoverable: Udostępniaj profil i wpisy funkcjom odkrywania fields: name: Nazwa diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 417d69d88e..500fb4c30e 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -3,7 +3,6 @@ pt-BR: simple_form: hints: account: - attribution_domains_as_text: Um por linha. Protege de falsas atribuições. discoverable: Suas publicações e perfil públicos podem ser destaques ou recomendados em várias áreas de Mastodon, e seu perfil pode ser sugerido a outros usuários. display_name: Seu nome completo ou apelido. fields: Sua página inicial, pronomes, idade ou qualquer coisa que quiser. @@ -147,7 +146,6 @@ pt-BR: url: Aonde os eventos serão enviados labels: account: - attribution_domains_as_text: Sites permitidos para credenciar você discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 207d77f38b..ba41612042 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -3,7 +3,6 @@ pt-PT: simple_form: hints: account: - attribution_domains_as_text: Um por linha. Protege contra falsas atribuições. discoverable: As suas publicações e perfil públicos podem ser destacados ou recomendados em várias áreas do Mastodon e o seu perfil pode ser sugerido a outros utilizadores. display_name: O seu nome completo ou o seu nome divertido. fields: A sua página inicial, os seus pronomes, idade e tudo o que quiser. @@ -156,7 +155,6 @@ pt-PT: url: Para onde os eventos serão enviados labels: account: - attribution_domains_as_text: Sites autorizados a atribuir-lhe crédito discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index 63dcf91343..978f1e4fd4 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -3,7 +3,6 @@ ro: simple_form: hints: account: - attribution_domains_as_text: Una pe linie. Protejează împotriva atribuirilor false. discoverable: Este posibil ca postările și profilul tău să fie recomandate în diferite zone ale Mastodon, iar profilul tău ar poate fi sugerat altor utilizatori. display_name: Numele dvs. complet sau numele dvs. amuzant. fields: Pagina ta principală, pronumele tale, vârsta, sau orice îți dorești. diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index b81d20704b..64db162ea6 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -3,7 +3,6 @@ ru: simple_form: hints: account: - attribution_domains_as_text: По одному на строку. Защищает от ложных атрибуций. discoverable: Ваши публичные сообщения и профиль могут быть показаны или рекомендованы в различных разделах Mastodon, и ваш профиль может быть предложен другим пользователям. display_name: Ваше полное имя или псевдоним. fields: Ваша домашняя страница, местоимения, возраст - все, что угодно. @@ -156,7 +155,6 @@ ru: url: Куда события будут отправляться labels: account: - attribution_domains_as_text: Веб-сайты, которым разрешено ссылаться на вас discoverable: Профиль и сообщения в алгоритмах обнаружения fields: name: Пункт diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 8e01c6264d..7389512896 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -3,7 +3,6 @@ sq: simple_form: hints: account: - attribution_domains_as_text: Një për rresht. Kjo mbron nga atribuime të rreme. discoverable: Postimet dhe profili juaj publik mund të shfaqen, ose rekomandohen në zona të ndryshme të Mastodon-it dhe profili juaj mund të sugjerohet përdoruesve të tjerë. display_name: Emri juaj i plotë, ose emri juaj lojcak. fields: Faqja juaj hyrëse, përemra, moshë, ç’të keni qejf. @@ -155,7 +154,6 @@ sq: url: Ku do të dërgohen aktet labels: account: - attribution_domains_as_text: Sajte të lejuar t’ju japin hakë discoverable: Profilin dhe postimet bëji objekt të algoritmeve të zbulimit fields: name: Etiketë diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 2d2c1c0060..e35eba36c9 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -3,7 +3,6 @@ sv: simple_form: hints: account: - attribution_domains_as_text: En per rad. Skyddar mot falska attributioner. discoverable: Dina offentliga inlägg och din profil kan komma att presenteras eller rekommenderas inom olika områden av Mastodon och din profil kan komma att föreslås till andra användare. display_name: Ditt fullständiga namn eller ditt roliga namn. fields: Din hemsida, ditt pronomen, din ålder, vadhelst du vill. @@ -153,7 +152,6 @@ sv: url: Dit händelser kommer skickas labels: account: - attribution_domains_as_text: Webbplatser som får kreditera dig discoverable: Presentera profil och inlägg med upptäcktsalgoritmer fields: name: Etikett diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index f644294092..db9518759a 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -3,7 +3,6 @@ th: simple_form: hints: account: - attribution_domains_as_text: หนึ่งรายการต่อบรรทัด ปกป้องจากการระบุแหล่งที่มาที่ผิด discoverable: อาจแสดงหรือแนะนำโพสต์และโปรไฟล์สาธารณะของคุณในพื้นที่ต่าง ๆ ของ Mastodon และอาจเสนอแนะโปรไฟล์ของคุณให้กับผู้ใช้อื่น ๆ display_name: ชื่อเต็มของคุณหรือชื่อแบบสนุกสนานของคุณ fields: หน้าแรก, สรรพนาม, อายุของคุณ สิ่งใดก็ตามที่คุณต้องการ @@ -144,7 +143,6 @@ th: url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง labels: account: - attribution_domains_as_text: เว็บไซต์ที่ได้รับอนุญาตให้ให้เครดิตคุณ discoverable: แสดงโปรไฟล์และโพสต์ในอัลกอริทึมการค้นพบ fields: name: ป้ายชื่อ diff --git a/config/locales/simple_form.tok.yml b/config/locales/simple_form.tok.yml index 8d9aa9585a..81c3121f24 100644 --- a/config/locales/simple_form.tok.yml +++ b/config/locales/simple_form.tok.yml @@ -3,7 +3,6 @@ tok: simple_form: hints: account: - attribution_domains_as_text: linja sitelen wan la wan taso o lon. ni la, sona pona pi jan pali li lon. display_name: nimi sina ale anu nimi sina musi. fields: lipu open sina, en nimi pi kon sina, en suli tenpo sina, en ijo ante ale pi wile sina. note: 'sina ken @mu e jan ante, li ken lon e #kulupu toki suli.' diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 26cade806e..7c7c08380b 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -3,7 +3,7 @@ tr: simple_form: hints: account: - attribution_domains_as_text: Her satırda bir tanesi. Sahte atıflardan korur. + attribution_domains: Her satırda bir tane. Sahte atıflardan korur. discoverable: Herkese açık gönderileriniz ve profiliniz Mastodon'un çeşitli kısımlarında öne çıkarılabilir veya önerilebilir ve profiliniz başka kullanıcılara önerilebilir. display_name: Tam adınız veya kullanıcı adınız. fields: Ana sayfanız, zamirleriniz, yaşınız, istediğiniz herhangi bir şey. @@ -156,7 +156,7 @@ tr: url: Olayların gönderileceği yer labels: account: - attribution_domains_as_text: Size atıf verebilecek websiteleri + attribution_domains: Size atıf verebilecek websiteleri discoverable: Profil ve gönderileri keşif algoritmalarında kullan fields: name: Etiket diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 9ecd12517b..4fc8665b91 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -3,7 +3,6 @@ uk: simple_form: hints: account: - attribution_domains_as_text: Один на рядок. Захищає від фальшивих атрибутів. discoverable: Ваші дописи та профіль можуть бути рекомендовані в різних частинах Mastodon і ваш профіль може бути запропонований іншим користувачам. display_name: Ваше повне ім'я або ваш псевдонім. fields: Ваша домашня сторінка, займенники, вік, все, що вам заманеться. @@ -156,7 +155,6 @@ uk: url: Куди надсилатимуться події labels: account: - attribution_domains_as_text: Сайти дозволяють вам вказувати ваше авторство discoverable: Функції профілю та дописів у алгоритмах виявлення fields: name: Мітка diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 6d9a8c749e..84cc4af817 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -3,7 +3,6 @@ vi: simple_form: hints: account: - attribution_domains_as_text: Mỗi cái một dòng. Bảo vệ khỏi những sự gán ghép sai. discoverable: Hồ sơ và tút công khai của bạn được đề xuất cho những người dùng Mastodon khác. display_name: Tên đầy đủ hoặc biệt danh đều được. fields: Trang blog của bạn, nghề nghiệp, tuổi hoặc bất cứ thứ gì. @@ -156,7 +155,6 @@ vi: url: Nơi những sự kiện được gửi đến labels: account: - attribution_domains_as_text: Các trang web được ghi nhận cho bạn discoverable: Cho phép khám phá hồ sơ fields: name: Nhãn diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 226ebfd0b8..0c6be357ce 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -3,7 +3,6 @@ zh-CN: simple_form: hints: account: - attribution_domains_as_text: 每行一个域名。这样就可以保护作品免受虚假署名。 discoverable: 你的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,你的个人资料可能会被推荐给其他用户。 display_name: 你的全名或昵称。 fields: 你的主页、人称代词、年龄,以及任何你想要添加的内容。 @@ -24,11 +23,11 @@ zh-CN: text_html: 可选。你可以使用嘟文格式。你可以预置警告以节省时间 type_html: 用%{acct}选择做什么 types: - disable: 禁止用户使用账户,但不会删除或隐藏账户内容。 + disable: 禁止用户使用账号,但不会删除或隐藏账号内容。 none: 用它来向用户发送警告,不会触发其他操作。 sensitive: 强制将此用户的所有媒体文件标记为敏感内容。 - silence: 阻止用户发送公开嘟文,除了关注者以外,其他人都无法看到他的嘟文和通知。关闭针对此账户的所有举报。 - suspend: 阻止此账户的任何交互并删除其内容。30天内可以撤销操作。关闭针对此账户的所有举报。 + silence: 阻止用户发送公开嘟文,除了关注者以外,其他人都无法看到他的嘟文和通知。关闭针对此账号的所有举报。 + suspend: 阻止此账号的任何交互并删除其内容。30天内可以撤销操作。关闭针对此账号的所有举报。 warning_preset_id: 可选。你可以在预置文本末尾添加自定义文本 announcement: all_day: 如果选中,只有该时间段内的日期会显示。 @@ -41,7 +40,7 @@ zh-CN: defaults: autofollow: 通过邀请链接注册的用户将会自动关注你 avatar: 支持WEBP、PNG、GIF 或 JPG。最大 %{size}。将缩小到 %{dimensions}px - bot: 来自这个账户的绝大多数操作都是自动进行的,并且可能无人监控 + bot: 来自这个账号的绝大多数操作都是自动进行的,并且可能无人监控 context: 过滤规则将被应用到的一个或多个场景 current_password: 为了安全起见,请输入当前账号的密码 current_username: 请输入当前账号的用户名以确认 @@ -75,7 +74,7 @@ zh-CN: filters: action: 选择在嘟文命中过滤规则时要执行的操作 actions: - hide: 彻底隐藏过滤内容,就像它从未存在过一样 + hide: 选择在嘟文命中过滤规则时要执行的操作 warn: 显示带有过滤规则标题的警告,并隐藏过滤内容 form_admin_settings: activity_api_enabled: 本站每周的嘟文数、活跃用户数和新注册用户数 @@ -126,7 +125,7 @@ zh-CN: otp: 输入你手机应用上生成的双因素认证代码,或者任意一个恢复代码: webauthn: 如果是 USB 密钥,请确保将其插入,如有必要,请点击它。 settings: - indexable: 你的账户页可能会出现在Google、Bing等的搜索结果中。 + indexable: 你的个人资料可能会出现在Google、Bing等的搜索结果中。 show_application: 无论如何,你始终可以看到是哪个应用发布了你的嘟文。 tag: name: 你只能改变字母的大小写,让它更易读 @@ -156,13 +155,12 @@ zh-CN: url: 事件将被发往的目的地 labels: account: - attribution_domains_as_text: 授权展示你的署名的网站 - discoverable: 在发现算法中展示你的账户与嘟文 + discoverable: 在发现算法中展示你的账号与嘟文 fields: name: 标签 value: 内容 indexable: 将公开嘟文纳入搜索范围 - show_collections: 在账户页显示关注和关注者 + show_collections: 在个人资料显示关注和关注者 unlocked: 自动接受新关注者 account_alias: acct: 处理旧账号 @@ -192,9 +190,9 @@ zh-CN: appeal: text: 说明此结果应当被推翻的理由 defaults: - autofollow: 让被邀请人关注你的账户 + autofollow: 让被邀请人关注你的账号 avatar: 头像 - bot: 这是一个机器人账户 + bot: 这是一个机器人账号 chosen_languages: 过滤语言 confirm_new_password: 确认新密码 confirm_password: 确认密码 @@ -225,7 +223,7 @@ zh-CN: setting_default_privacy: 嘟文默认可见范围 setting_default_sensitive: 始终标记媒体为敏感内容 setting_delete_modal: 在删除嘟文前询问我 - setting_disable_hover_cards: 禁用悬停资料卡预览 + setting_disable_hover_cards: 禁用悬停资料预览 setting_disable_swiping: 禁用滑动动作 setting_display_media: 媒体显示 setting_display_media_default: 默认 @@ -305,7 +303,7 @@ zh-CN: notification_emails: appeal: 有人对审核结果提出申诉 digest: 发送摘要邮件 - favourite: 有用户喜欢了我的嘟文 + favourite: 当有用户喜欢了我的嘟文时,发送电子邮件提醒我 follow: 有人关注了我 follow_request: 有人向我发送了关注请求 mention: 有人提到了我 @@ -323,8 +321,8 @@ zh-CN: hint: 补充信息 text: 规则 settings: - indexable: 允许搜索引擎索引账户页 - show_application: 显示你发嘟所用的应用 + indexable: 允许搜索引擎索引个人资料 + show_application: 显示你发嘟使用的应用 tag: listable: 允许这个话题在用户目录中显示 name: 话题 @@ -346,7 +344,7 @@ zh-CN: time_zone: 时区 user_role: color: 徽章颜色 - highlighted: 在账户页显示角色徽章 + highlighted: 在用户资料中显示角色徽章 name: 名称 permissions_as_keys: 权限 position: 优先级 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 48a7941f76..1861ee1559 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -3,7 +3,6 @@ zh-TW: simple_form: hints: account: - attribution_domains_as_text: 每行一個。以保護偽造署名。 discoverable: 公開嘟文及個人檔案可能於各 Mastodon 功能中被推薦,並且您的個人檔案可能被推薦至其他使用者。 display_name: 完整名稱或暱稱。 fields: 烘培雞、自我認同代稱、年齡,及任何您想分享的。 @@ -156,7 +155,6 @@ zh-TW: url: 事件會被傳送至何處 labels: account: - attribution_domains_as_text: 允許對您予與信譽之網站 discoverable: 於探索演算法中推薦個人檔案及嘟文 fields: name: 標籤 diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 2249875b6d..e6da2ee8d3 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -23,8 +23,8 @@ zh-CN: admin: account_actions: action: 执行操作 - already_silenced: 此账户已受限。 - already_suspended: 此账户已被封禁。 + already_silenced: 此账号已受限。 + already_suspended: 此账号已被封禁。 title: 对 %{acct} 执行管理操作 account_moderation_notes: create: 新建记录 @@ -86,9 +86,9 @@ zh-CN: title: 位置 login_status: 登录状态 media_attachments: 媒体文件 - memorialize: 设为追悼账户 - memorialized: 已设为追悼账户 - memorialized_msg: 成功将 %{username} 转换为追悼账户 + memorialize: 设为追悼账号 + memorialized: 已设为追悼账号 + memorialized_msg: 成功将 %{username} 转换为追悼账号 moderation: active: 活跃 all: 全部 @@ -113,11 +113,11 @@ zh-CN: protocol: 协议 public: 公开页面 push_subscription_expires: PuSH 订阅过期时间 - redownload: 刷新账户信息 - redownloaded_msg: 成功从来源站点刷新 %{username} 的账户信息 + redownload: 刷新账号信息 + redownloaded_msg: 成功从来源站点刷新 %{username} 的账号信息 reject: 拒绝 rejected_msg: 已拒绝 %{username} 的注册申请 - remote_suspension_irreversible: 此账户的数据已被不可逆转地删除。 + remote_suspension_irreversible: 此账号的数据已被不可逆转地删除。 remote_suspension_reversible_hint_html: 账号已在他们的服务器上封禁,数据将在 %{date} 完全删除。 在此之前,远程服务器仍可恢复此账号,并且没有任何不良影响。 如果你想立即移除该账号的所有数据,可以在下面进行。 remove_avatar: 删除头像 remove_header: 移除封面图 @@ -142,8 +142,8 @@ zh-CN: sensitized: 已标记为敏感内容 shared_inbox_url: 公用收件箱(Shared Inbox)URL show: - created_reports: 这个账户提交的举报 - targeted_reports: 针对这个账户的举报 + created_reports: 这个账号提交的举报 + targeted_reports: 针对这个账号的举报 silence: 隐藏 silenced: 已隐藏 statuses: 嘟文 @@ -209,7 +209,7 @@ zh-CN: enable_relay: 启用中继站 enable_sign_in_token_auth_user: 为用户启用邮件令牌身份验证 enable_user: 启用用户 - memorialize_account: 设为追悼账户 + memorialize_account: 设为追悼账号 promote_user: 指派管理员 publish_terms_of_service: 发布服务条款 reject_appeal: 驳回申诉 @@ -274,7 +274,7 @@ zh-CN: enable_relay_html: "%{name} 启用了中继站 %{target}" enable_sign_in_token_auth_user_html: "%{name} 为 %{target} 启用了邮件令牌身份验证" enable_user_html: "%{name} 将用户 %{target} 设置为允许登录" - memorialize_account_html: "%{name} 将 %{target} 设置为追悼账户" + memorialize_account_html: "%{name} 将 %{target} 设置为追悼账号" promote_user_html: "%{name} 将用户 %{target} 设为管理员" publish_terms_of_service_html: "%{name} 更新了服务条款" reject_appeal_html: "%{name} 驳回了 %{target} 对审核结果的申诉" @@ -397,10 +397,10 @@ zh-CN: confirm: 封禁 permanent_action: 撤销屏蔽不会恢复任何数据或关系。 preamble_html: 你即将封禁 %{domain} 及其子域名上的站点。 - remove_all_data: 这将从你的站点上删除对方站点的账户的全部内容、媒体与个人资料数据。 + remove_all_data: 这将从你的站点上删除对方站点的账号的全部内容、媒体与个人资料数据。 stop_communication: 你的站点将停止与这些站点的通信。 title: 确认屏蔽 %{domain} - undo_relationships: 这将解除你的站点与对方站点的账户之间的任何关注。 + undo_relationships: 这将解除你的站点与对方站点的账号之间的任何关注。 created_msg: 正在执行站点屏蔽 destroyed_msg: 站点屏蔽已被撤销 domain: 域名 @@ -411,9 +411,9 @@ zh-CN: import: 导入 new: create: 添加屏蔽 - hint: 域名屏蔽不会阻止该域名下的账户进入本站的数据库,但是会对来自这个域名的账户自动进行预先设置的管理操作。 + hint: 域名屏蔽不会阻止该域名下的账号进入本站的数据库,但是会对来自这个域名的账号自动进行预先设置的管理操作。 severity: - desc_html: 选择隐藏会将该域名下账户发送的嘟文设置为仅关注者可见;选择封禁会将该域名下账户发送的嘟文、媒体文件以及个人资料数据从本实例上删除;如果你只是想拒绝接收来自该域名的任何媒体文件,请选择。 + desc_html: 选择隐藏会将该域名下账号发送的嘟文设置为仅关注者可见;选择封禁会将该域名下账号发送的嘟文、媒体文件以及个人资料数据从本实例上删除;如果你只是想拒绝接收来自该域名的任何媒体文件,请选择。 noop: 无 silence: 隐藏 suspend: 封禁 @@ -449,7 +449,7 @@ zh-CN: title: 封禁新的邮箱域名 no_email_domain_block_selected: 没有任何项目被选中,因此未更改邮箱域名屏蔽列表 not_permitted: 未允许 - resolved_dns_records_hint_html: 该域名解析的 MX 记录所指向的域名如下,这些域名被用于接收电子邮件。 即使电子邮件地址域名与 MX 域名不同,屏蔽一个 MX 域名意味着阻止任何使用相同 MX 域名的邮箱地址注册本站账户。 请谨慎操作,不要误屏蔽主要的邮箱提供商。 + resolved_dns_records_hint_html: 该域名解析的 MX 记录所指向的域名如下,这些域名被用于接收电子邮件。 即使电子邮件地址域名与 MX 域名不同,屏蔽一个 MX 域名意味着阻止任何使用相同 MX 域名的邮箱地址注册本站账号。 请谨慎操作,不要误屏蔽主要的邮箱提供商。 resolved_through_html: 通过 %{domain} 解析 title: 被封禁的邮箱域名 export_domain_allows: @@ -468,7 +468,7 @@ zh-CN: title: 导入域名列表 no_file: 没有选择文件 follow_recommendations: - description_html: "“关注推荐”可帮助新用户快速找到有趣的内容。 当用户与他人的互动不足以形成个性化的建议时,就会推荐关注这些账户。推荐会每日更新,基于选定语言的近期最高互动数和最多本站关注者数综合评估得出。" + description_html: "“关注推荐”可帮助新用户快速找到有趣的内容。 当用户与他人的互动不足以形成个性化的建议时,就会推荐关注这些账号。推荐会每日更新,基于选定语言的近期最高互动数和最多本站关注者数综合评估得出。" language: 选择语言 status: 嘟文 suppress: 禁用推荐关注 @@ -599,10 +599,10 @@ zh-CN: mark_as_sensitive_description_html: 被举报的嘟文将被标记为敏感,同时该账号将被标记一次处罚,以供未来同一账号再次违规时参考。 other_description_html: 查看更多控制该账号行为的选项,并自定义编写与被举报账号的通信。 resolve_description_html: 不会对被举报账号采取任何动作,举报将被关闭,也不会留下处罚记录。 - silence_description_html: 只有关注或手工搜索此账号才能查看其资料,将严重限制其触达范围。可随时撤销。关闭针对此账户的所有举报。 - suspend_description_html: 该账户及其所有内容将无法访问并最终被删除,且无法与该账户进行互动。 在 30 天内可随时撤销。关闭针对此账户的所有举报。 + silence_description_html: 只有关注或手工搜索此账号才能查看其资料,将严重限制其触达范围。可随时撤销。关闭针对此账号的所有举报。 + suspend_description_html: 该账号及其所有内容将无法访问并最终被删除,且无法与该账号进行互动。 在 30 天内可随时撤销。关闭针对此账号的所有举报。 actions_description_html: 决定采取何种措施处理此举报。如果对被举报账号采取惩罚性措施,将向其发送一封电子邮件通知。但若选中垃圾信息类别则不会发送通知。 - actions_description_remote_html: 决定采取何种行动来解决此举报。 这只会影响你的服务器如何与该远程账户的通信并处理其内容。 + actions_description_remote_html: 决定采取何种行动来解决此举报。 这只会影响你的服务器如何与该远程账号的通信并处理其内容。 actions_no_posts: 该举报没有相关嘟文可供删除 add_to_report: 添加更多内容到举报 already_suspended_badges: @@ -611,10 +611,10 @@ zh-CN: are_you_sure: 你确定吗? assign_to_self: 接管 assigned: 已接管的管理员 - by_target_domain: 被举报账户的域名 + by_target_domain: 被举报账号的域名 cancel: 取消 category: 类别 - category_description_html: 在与被举报账户的通信时,将引用该账号和/或内容被举报的原因 + category_description_html: 在与被举报账号的通信时,将引用该账号和/或内容被举报的原因 comment: none: 没有 comment_description_html: "%{name} 补充道:" @@ -655,8 +655,8 @@ zh-CN: action_preambles: delete_html: 你即将删除 @%{acct} 的一些嘟文。 这将: mark_as_sensitive_html: 你即将 标记 @%{acct} 的帖一些子为 敏感。这将: - silence_html: 你即将限制 @%{acct} 的账户。 这将: - suspend_html: 你即将暂停 @%{acct} 的账户。 这将: + silence_html: 你即将限制 @%{acct} 的账号。 这将: + suspend_html: 你即将暂停 @%{acct} 的账号。 这将: actions: delete_html: 删除违规嘟文 mark_as_sensitive_html: 将违规嘟文的媒体标记为敏感 @@ -666,7 +666,7 @@ zh-CN: close_reports_html: 将针对 @%{acct}所有举报标记为已解决 delete_data_html: 从现在起 30 天后删除 @%{acct} 的个人资料和内容,除非他们同时解除暂停。 preview_preamble_html: "@%{acct} 将收到包含以下内容的警告:" - record_strike_html: 记录一次针对 @%{acct} 的警示,以帮助你在这个账户上的未来违规事件中得到重视。 + record_strike_html: 记录一次针对 @%{acct} 的警示,以帮助你在这个账号上的未来违规事件中得到重视。 send_email_html: 向 @%{acct} 发送警告邮件 warning_placeholder: 可选的补充理由,以说明调整的情况。 target_origin: 被举报账号的来源 @@ -675,7 +675,7 @@ zh-CN: unknown_action_msg: 未知操作:%{action} unresolved: 未处理 updated_at: 更新时间 - view_profile: 查看账户 + view_profile: 查看资料 roles: add_new: 添加角色 assigned_users: @@ -756,7 +756,7 @@ zh-CN: title: 招牌 captcha_enabled: desc_html: 这依赖于来自hCaptcha的外部脚本,可能会带来安全和隐私问题。此外,这可能使注册过程对某些人(尤其是残疾人)的注册简易程度大幅下降。出于这些原因,请考虑采取其他措施,如基于批准或邀请的注册方式。 - title: 要求新用户输入验证码以确认他们的账户 + title: 要求新用户输入验证码以确认他们的账号 content_retention: danger_zone: 危险操作区 preamble: 控制用户生成的内容在 Mastodon 中如何存储。 @@ -789,7 +789,7 @@ zh-CN: warning_hint: 我们建议使用“注册必须经过批准”,除非你确信你的管理团队能够及时处理骚扰和恶意注册。 security: authorized_fetch: 与外站联合时要求身份验证 - authorized_fetch_hint: 要求外站请求通过验证能够使用户级别与服务器级别的封锁更为严格。然而,这将带来额外的性能负担、减少回复触达范围、并可能导致与一些联邦宇宙服务的兼容性问题。此外,这并不能阻止他人针对性地获取公开嘟文与账户。 + authorized_fetch_hint: 要求外站请求通过验证能够使用户级别与服务器级别的封锁更为严格。然而,这将带来额外的性能负担、减少回复触达范围、并可能导致与一些联邦宇宙服务的兼容性问题。此外,这并不能阻止他人针对性地获取公开嘟文与账号。 authorized_fetch_overridden_hint: 由于此设置被环境变量覆盖,目前无法更改。 federation_authentication: 联合时强制要求身份验证 title: 服务器设置 @@ -811,7 +811,7 @@ zh-CN: statuses: account: 作者 application: 应用 - back_to_account: 返回账户信息页 + back_to_account: 返回账号信息页 back_to_report: 返回举报页 batch: add_to_report: '添加到举报 #%{id}' @@ -861,10 +861,10 @@ zh-CN: elasticsearch_index_mismatch: message_html: Elasticsearch索引映射已过时。请运行tootctl search deploy --only=%{value}。 elasticsearch_preset: - action: 查看文档 + action: 阅读文档 message_html: 你的Elasticsearch集群有多个节点,但Mastodon未配置好使用它们。 elasticsearch_preset_single_node: - action: 查看文档 + action: 阅读文档 message_html: 你的Elasticsearch集群只有一个节点,ES_PRESET应该设置为single_node_cluster。 elasticsearch_reset_chewy: message_html: 你的Elasticsearch系统索引已过时,可能是由于设置更改导致的。请运行tootctl search deploy --reset-chewy命令来更新它。 @@ -978,9 +978,9 @@ zh-CN: allow: 允许嘟文 allow_account: 允许发布者 confirm_allow: 你确定要允许选中的嘟文吗? - confirm_allow_account: 你确定要允许选中的账户吗? + confirm_allow_account: 你确定要允许选中的账号吗? confirm_disallow: 你确定要禁止选中的嘟文吗? - confirm_disallow_account: 你确定要禁止选中的账户吗? + confirm_disallow_account: 你确定要禁止选中的账号吗? description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝个别嘟文。 disallow: 禁止嘟文 disallow_account: 禁止发布者 @@ -1011,7 +1011,7 @@ zh-CN: usage_comparison: 今日被使用 %{today} 次,前一日为 %{yesterday} 次 used_by_over_week: other: 过去一周内被 %{count} 个人使用过 - title: 建议与热门 + title: 推荐与热门 trending: 当前热门 warning_presets: add_new: 添加新条目 @@ -1058,7 +1058,7 @@ zh-CN: body: 新的紧急更新版本Mastodon已经发布,你可能希望尽快更新! subject: "%{instance} 有 Mastodon 的紧急更新!" new_pending_account: - body: 新账户的详细信息如下。你可以批准或拒绝此申请。 + body: 新账号的详细信息如下。你可以批准或拒绝此申请。 subject: "%{instance} 上有新账号 (%{username}) 需要审核" new_report: body: "%{reporter} 举报了用户 %{target}" @@ -1078,8 +1078,8 @@ zh-CN: subject: "%{instance} 上有新热门等待审核" aliases: add_new: 创建别名 - created_msg: 成功创建了一个新别名。你现在可以从旧账户开始迁移了。 - deleted_msg: 成功移除别名。已经无法从该账户移动到此账户了。 + created_msg: 成功创建了一个新别名。你现在可以从旧账号开始迁移了。 + deleted_msg: 成功移除别名。已经无法从该账号移动到此账号了。 empty: 你没有设置别名。 hint_html: 如果你想从另一个账号迁移到这里,可以先在这里创建一个别名。要把旧账号的关注者迁移过来,这一步是必须的。设置别名的操作是无害且可撤销的账号迁移的操作会从旧账号发起。 remove: 取消关联别名 @@ -1100,7 +1100,7 @@ zh-CN: settings: 更改邮件偏好: %{link} unsubscribe: 取消订阅 view: 点此链接查看详情: - view_profile: 查看账户页 + view_profile: 查看个人资料 view_status: 查看嘟文 applications: created: 应用创建成功 @@ -1117,7 +1117,7 @@ zh-CN: hint_html: 只剩最后一件事了!我们需要确认你是一个人类(这样我们才能阻止恶意访问!)。请输入下面的验证码,然后点击“继续”。 title: 安全检查 confirmations: - awaiting_review: 邮箱确认成功!%{domain} 的工作人员正在审核你的注册信息。如果他们批准了你的账户,你将收到一封邮件通知! + awaiting_review: 邮箱确认成功!%{domain} 的工作人员正在审核你的注册信息。如果他们批准了你的账号,你将收到一封邮件通知! awaiting_review_title: 你的注册申请正在审核中 clicking_this_link: 点击此链接 login_link: 登录 @@ -1125,9 +1125,9 @@ zh-CN: redirect_to_app_html: 你应该已经跳转到 %{app_name}。如果没有,请尝试 %{clicking_this_link} 或手动返回 App。 registration_complete: 你在 %{domain} 上的注册现已完成! welcome_title: 欢迎你,%{name}! - wrong_email_hint: 如果这个邮箱地址不正确,你可以在账户设置中更改。 - delete_account: 删除账户 - delete_account_html: 如果你想删除你的账户,请点击此处继续。你需要确认你的操作。 + wrong_email_hint: 如果这个邮箱地址不正确,你可以在账号设置中更改。 + delete_account: 删除账号 + delete_account_html: 如果你想删除你的账号,请点击此处继续。你需要确认你的操作。 description: prefix_invited_by_user: "@%{name} 邀请你加入这个Mastodon服务器!" prefix_sign_up: 现在就注册 Mastodon 吧! @@ -1141,7 +1141,7 @@ zh-CN: log_in_with: 通过外部服务登录 login: 登录 logout: 退出登录 - migrate_account: 迁移到另一个账户 + migrate_account: 迁移到另一个账号 migrate_account_html: 如果你希望引导他人关注另一个账号,请点击这里进行设置。 or_log_in_with: 或通过外部服务登录 progress: @@ -1164,7 +1164,7 @@ zh-CN: preamble_invited: 在继续操作前,请先阅读并同意 %{domain} 管理员设置的基本规则。 title: 一些基本规则。 title_invited: 通过邀请加入 - security: 账户安全 + security: 账号安全 set_new_password: 设置新密码 setup: email_below_hint_html: 请检查你的垃圾邮件文件夹,或请求重新发送邮件。如果你填写的邮箱地址有误,请更正。 @@ -1173,18 +1173,18 @@ zh-CN: new_confirmation_instructions_sent: 你将在几分钟内收到一封带有确认链接的新邮件! title: 请检查你的收件箱 sign_in: - preamble_html: 使用你在 %{domain} 的账户和密码登录。如果你的账户是在其他站点上注册的,你将无法在此登录。 + preamble_html: 使用你在 %{domain} 的账号和密码登录。如果你的账号是在其他站点上注册的,你将无法在此登录。 title: 登录到 %{domain} sign_up: manual_review: 你在 %{domain} 上的注册需要经由管理人员手动审核。 为了帮助我们处理你的注册,请简要说明你为什么想在 %{domain} 上注册。 - preamble: 在这个 Mastodon 站点上注册一个账户,你就可以关注联邦宇宙中的任何人,无论他们的账户在哪里。 + preamble: 在这个 Mastodon 站点上注册一个账号,你就可以关注联邦宇宙中的任何人,无论他们的账号在哪里。 title: 让我们在 %{domain} 上开始。 status: - account_status: 账户状态 + account_status: 账号状态 confirming: 等待完成邮箱地址确认 functional: 你的账号可以正常使用了。 pending: 站务人员正在审核你的申请。这需要花点时间。在申请被批准后,你将收到一封邮件。 - redirecting_to: 你的账户无效,因为它已被设置为跳转到 %{acct} + redirecting_to: 你的账号无效,因为它已被设置为跳转到 %{acct} self_destruct: "%{domain} 即将关闭,你只能获得对你自己的账号的有限访问权限。" view_strikes: 查看针对你账号的处罚记录 too_fast: 表单提交过快,请重试。 @@ -1228,8 +1228,8 @@ zh-CN: challenge_not_passed: 你输入的信息不正确 confirm_password: 输入你当前的密码来验证身份 confirm_username: 输入你的用户名以继续 - proceed: 删除账户 - success_msg: 你的账户已成功删除 + proceed: 删除账号 + success_msg: 你的账号已成功删除 warning: before: 在删除前,请仔细阅读下列说明: caches: 已被其他服务器缓存的内容可能还会保留 @@ -1237,7 +1237,7 @@ zh-CN: email_change_html: 你可以 更改邮箱地址,而无需删除账号 email_contact_html: 如果它还未送达,你可以发邮件给 %{email} 寻求帮助。 email_reconfirmation_html: 如果你没有收到确认邮件,请点击 重新发送 。 - irreversible: 你将无法恢复或重新激活你的账户 + irreversible: 你将无法恢复或重新激活你的账号 more_details_html: 更多细节,请查看 隐私政策 。 username_available: 你的用户名现在又可以使用了 username_unavailable: 你的用户名仍将无法使用 @@ -1247,14 +1247,14 @@ zh-CN: appeal: 申诉 appeal_approved: 此次处罚已申诉成功并不再生效 appeal_rejected: 此次申诉已被驳回 - appeal_submitted_at: 申诉已提交 + appeal_submitted_at: 已提交申诉 appealed_msg: 你的申诉已经提交。如果申诉通过,你将收到通知。 appeals: submit: 提交申诉 approve_appeal: 批准申诉 associated_report: 相关举报 created_at: 日期 - description_html: 以下是针对你的账户采取的行动和警告,已经由 %{instance} 的工作人员发送给你。 + description_html: 以下是针对你的账号采取的行动和警告,已经由 %{instance} 的工作人员发送给你。 recipient: 发送至 reject_appeal: 驳回申诉 status: '嘟文 #%{id}' @@ -1278,7 +1278,7 @@ zh-CN: errors: '400': 你提交的请求无效或格式不正确。 '403': 你没有访问此页面的权限。 - '404': 无法找到你所要访问的页面。 + '404': 无法找到你访问的页面。 '406': 无法以要求的格式显示此页面。 '410': 你要查看的页面已不存在。 '422': @@ -1297,7 +1297,7 @@ zh-CN: archive_takeout: date: 日期 download: 下载你的存档 - hint_html: 你可以请求一份账户数据存档,其中包含你的嘟文和已上传的媒体文件。导出的数据为 ActivityPub 格式,因而可以被兼容的软件读取。每次允许请求存档的间隔至少为 7 天。 + hint_html: 你可以请求一份账号数据存档,其中包含你的嘟文和已上传的媒体文件。导出的数据为 ActivityPub 格式,因而可以被兼容的软件读取。每次允许请求存档的间隔至少为 7 天。 in_progress: 正在准备你的存档…… request: 请求你的存档 size: 大小 @@ -1315,7 +1315,7 @@ zh-CN: hint_html: "什么是精选话题? 它们被显示在你的公开个人资料中的突出位置,人们可以在这些标签下浏览你的公共嘟文。 它们是跟踪创作或长期项目的进度的重要工具。" filters: contexts: - account: 账户 + account: 个人资料 home: 主页与列表 notifications: 通知 public: 公共时间线 @@ -1389,17 +1389,17 @@ zh-CN: overwrite_long: 将当前记录替换为新记录 overwrite_preambles: blocking_html: - other: 你即将使用来自 %{filename} 的最多 %{count} 个账户替换你的屏蔽列表。 + other: 你即将使用来自 %{filename} 的最多 %{count} 个账号替换你的屏蔽列表。 bookmarks_html: other: 你即将使用来自 %{filename} 的最多 %{count} 条嘟文替换你的收藏列表。 domain_blocking_html: other: 你即将使用来自 %{filename} 的最多 %{count} 个站点域名替换你的站点屏蔽列表。 following_html: - other: 你即将关注来自 %{filename} 的最多 %{count} 个账户,并停止关注其他所有人。 + other: 你即将关注来自 %{filename} 的最多 %{count} 个账号,并停止关注其他所有人。 lists_html: - other: 你即将使用来自 %{filename} 的内容替换你的列表。最多将会有 %{count} 个账户 被添加到新列表。 + other: 你即将使用来自 %{filename} 的内容替换你的列表。最多将会有 %{count} 个账号 被添加到新列表。 muting_html: - other: 你即将使用来自 %{filename} 的最多 %{count} 个账户替换你的已隐藏账户列表。 + other: 你即将使用来自 %{filename} 的最多 %{count} 个账号替换你的已隐藏账号列表。 preambles: blocking_html: other: 你即将屏蔽来自 %{filename} 的最多 %{count} 个账号。 @@ -1410,7 +1410,7 @@ zh-CN: following_html: other: 你即将关注来自 %{filename} 的最多 %{count} 个账号。 lists_html: - other: 你即将从 %{filename} 中添加最多 %{count} 个账户到你的列表中。如果没有可用列表,将创建新的列表。 + other: 你即将从 %{filename} 中添加最多 %{count} 个账号到你的列表中。如果没有可用列表,将创建新的列表。 muting_html: other: 你即将隐藏来自 %{filename} 的最多 %{count} 个账号。 preface: 你可以在此导入你在其他实例导出的数据,比如你所关注或屏蔽的用户列表。 @@ -1424,12 +1424,12 @@ zh-CN: success: 数据上传成功,正在处理中 time_started: 开始于 titles: - blocking: 正在导入被屏蔽的账户 + blocking: 正在导入被屏蔽的账号 bookmarks: 正在导入收藏 domain_blocking: 正在导入站点屏蔽列表 - following: 正在导入关注的账户 + following: 正在导入关注的账号 lists: 导入列表 - muting: 正在导入隐藏的账户 + muting: 正在导入隐藏的账号 type: 导入类型 type_groups: constructive: 关注与收藏 @@ -1486,9 +1486,9 @@ zh-CN: emails: notification_emails: favourite: 嘟文被喜欢邮件通知 - follow: 账户被关注邮件通知 + follow: 账号被关注邮件通知 follow_request: 关注请求邮件通知 - mention: 账户被提及邮件通知 + mention: 账号被提及邮件通知 reblog: 嘟文被转嘟邮件通知 resubscribe_html: 如果你不小心取消了订阅,可以在你的邮件通知设置中重新订阅。 success_html: 你将不会在你的邮箱 %{email} 中收到 %{domain} 上的 Mastodon的 %{type} @@ -1500,14 +1500,14 @@ zh-CN: not_ready: 不能附加还在处理中的文件。请稍后再试! too_many: 最多只能添加 4 张图片 migrations: - acct: 新账户的 用户名@域名 + acct: 新账号的 用户名@域名 cancel: 取消跳转 cancel_explanation: 取消跳转将会重新激活你当前的账号,但是已经迁移到新账号的关注者不会回来。 cancelled_msg: 成功取消跳转 errors: already_moved: 和你已经迁移过的账号相同 missing_also_known_as: 没有引用此账号 - move_to_self: 不能是当前账户 + move_to_self: 不能是当前账号 not_found: 找不到 on_cooldown: 你正处于冷却状态 followers_count: 迁移时的关注者 @@ -1519,14 +1519,14 @@ zh-CN: past_migrations: 迁移记录 proceed_with_move: 移动关注者 redirected_msg: 你的账号现在会跳转至 %{acct} - redirecting_to: 你的账户正在跳转到 %{acct}。 + redirecting_to: 你的账号正在跳转到 %{acct}。 set_redirect: 设置跳转 warning: backreference_required: 新账号必须先引用当前账号 before: 在继续前,请仔细阅读下列说明: cooldown: 移动后会有一个冷却期,在此期间你将无法再次移动 - disabled_account: 此后,你的当前账户将无法使用。但是,你仍然有权导出数据或者重新激活。 - followers: 这步操作将把所有关注者从当前账户移动到新账户 + disabled_account: 此后,你的当前账号将无法使用。但是,你仍然有权导出数据或者重新激活。 + followers: 这步操作将把所有关注者从当前账号移动到新账号 only_redirect_html: 或者,你可以只在你的账号资料上设置一个跳转。 other_data: 不会自动移动其它数据 redirect: 在收到一个跳转通知后,你当前的账号资料将会更新,并被排除在搜索范围外 @@ -1640,7 +1640,7 @@ zh-CN: confirm_remove_selected_followers: 你确定想要取关所选的关注者吗? confirm_remove_selected_follows: 您确定要删除选定的关注者吗? dormant: 休眠 - follow_failure: 无法关注选中的部分账户。 + follow_failure: 无法关注选中的部分账号。 follow_selected_followers: 关注选中的关注者 followers: 关注者 following: 正在关注 @@ -1654,9 +1654,9 @@ zh-CN: remove_selected_domains: 删除在选定站点中的所有关注者 remove_selected_followers: 移除选中的关注者 remove_selected_follows: 取消关注所选用户 - status: 账户状态 + status: 账号状态 remote_follow: - missing_resource: 无法确定你的账户的跳转 URL + missing_resource: 无法确定你的账号的跳转 URL reports: errors: invalid_rules: 没有引用有效的规则 @@ -1698,7 +1698,7 @@ zh-CN: current_session: 当前会话 date: 日期 description: "%{platform} 上的 %{browser}" - explanation: 你的 Mastodon 账户目前已在这些浏览器上登录。 + explanation: 你的 Mastodon 账号目前已在这些浏览器上登录。 ip: IP 地址 platforms: adobe_air: Adobe Air @@ -1717,22 +1717,22 @@ zh-CN: revoke: 注销 revoke_success: 会话注销成功 title: 会话 - view_authentication_history: 查看账户的认证历史 + view_authentication_history: 查看账号的认证历史 settings: account: 账号 - account_settings: 账户设置 + account_settings: 账号设置 aliases: 账号别名 appearance: 外观 authorized_apps: 已授权的应用 back: 返回 Mastodon - delete: 删除账户 + delete: 删除账号 development: 开发 edit_profile: 更改个人资料 export: 导出 featured_tags: 精选话题 import: 导入 import_and_export: 导入与导出 - migrate: 账户迁移 + migrate: 账号迁移 notifications: 邮件通知 preferences: 偏好设置 profile: 个人资料 @@ -1745,12 +1745,12 @@ zh-CN: severed_relationships: download: 下载 (%{count}) event_type: - account_suspension: 封禁账户 (%{target_name}) + account_suspension: 封禁账号 (%{target_name}) domain_block: 封禁服务器 (%{target_name}) user_domain_block: 你屏蔽了 %{target_name} lost_followers: 失去的关注者 lost_follows: 失去的关注 - preamble: 如果你屏蔽了某个站点,或者管理员封禁了某个站点,你可能会丢失一部分关注和关注者。你可以下载联系被中断的账户列表,进行检查并导入到其他站点。 + preamble: 如果你屏蔽了某个站点,或者管理员封禁了某个站点,你可能会丢失一部分关注和关注者。你可以下载联系被中断的账号列表,进行检查并导入到其他站点。 purged: 关于此服务器的信息已被你所在服务器的管理员清除。 type: 事件 statuses: @@ -1782,7 +1782,7 @@ zh-CN: private: 仅关注者 private_long: 只有关注你的用户能看到 public: 公开 - public_long: 所有人可见 + public_long: 主页与列表 unlisted: 悄悄公开 unlisted_long: 对所有人可见,但不出现在公共时间线上 statuses_cleanup: @@ -1799,11 +1799,11 @@ zh-CN: keep_media: 保留带媒体附件的嘟文 keep_media_hint: 不删除任何包含媒体附件的嘟文 keep_pinned: 保留置顶嘟文 - keep_pinned_hint: 不删除你的任何置顶嘟文 + keep_pinned_hint: 不会删除你的任何置顶嘟文 keep_polls: 保留投票 keep_polls_hint: 不删除你的任何投票 - keep_self_bookmark: 保存你收藏的的嘟文 - keep_self_bookmark_hint: 不删除你收藏的嘟文 + keep_self_bookmark: 保存被你加入书签的嘟文 + keep_self_bookmark_hint: 如果你已将自己的嘟文添加书签,就不会删除这些嘟文 keep_self_fav: 保留你喜欢的嘟文 keep_self_fav_hint: 如果你喜欢了自己的嘟文,则不会删除这些嘟文 min_age: @@ -1852,19 +1852,19 @@ zh-CN: enabled: 已启用双因素认证 enabled_success: 已成功启用双因素认证 generate_recovery_codes: 生成恢复代码 - lost_recovery_codes: 如果你的手机不慎丢失,你可以使用恢复代码来重新获得对账户的访问权。如果你遗失了恢复代码,可以在此处重新生成。之前使用的恢复代码将会失效。 + lost_recovery_codes: 如果你的手机不慎丢失,你可以使用恢复代码来重新获得对账号的访问权。如果你遗失了恢复代码,可以在此处重新生成。之前使用的恢复代码将会失效。 methods: 双因素认证方式 otp: 身份验证应用 recovery_codes: 备份恢复代码 recovery_codes_regenerated: 恢复代码重新生成成功 - recovery_instructions_html: 如果你的手机无法使用,你可以使用下列任意一个恢复代码来重新获得对账户的访问权。请妥善保管好你的恢复代码(例如,你可以将它们打印出来,然后和其他重要的文件放在一起)。 + recovery_instructions_html: 如果你的手机无法使用,你可以使用下列任意一个恢复代码来重新获得对账号的访问权。请妥善保管好你的恢复代码(例如,你可以将它们打印出来,然后和其他重要的文件放在一起)。 webauthn: 安全密钥 user_mailer: appeal_approved: - action: 账户设置 + action: 账号设置 explanation: 你于 %{appeal_date} 对 %{strike_date} 在你账号上做出的处罚提出的申诉已被批准,你的账号已回到正常状态。 subject: 你于 %{date} 提出的申诉已被批准 - subtitle: 你的账户已再次回到良好状态。 + subtitle: 你的账号已再次回到良好状态。 title: 申诉已批准 appeal_rejected: explanation: 你于 %{appeal_date} 对 %{strike_date} 在你账号上做出的处罚提出的申诉已被驳回。 @@ -1872,13 +1872,13 @@ zh-CN: subtitle: 你的申诉已被驳回。 title: 申诉已驳回 backup_ready: - explanation: 你之前请求为你的 Mastodon 账户创建一份完整的备份。 + explanation: 你之前请求为你的 Mastodon 账号创建一份完整的备份。 extra: 现在它可以下载了! subject: 你的存档已经准备完毕 title: 存档导出 failed_2fa: details: 以下是该次登录尝试的详情: - explanation: 有人试图登录到你的账户,但提供了无效的辅助认证因子。 + explanation: 有人试图登录到你的账号,但提供了无效的辅助认证因子。 further_actions_html: 如果这不是你所为,你的密码可能已经泄露,建议你立即 %{action} 。 subject: 辅助认证失败 title: 辅助认证失败 @@ -1890,7 +1890,7 @@ zh-CN: subject: 已有新 IP 地址访问了你的账号 title: 一次新登录 terms_of_service_changed: - agreement: 继续使用你在 %{domain} 的账户即表示您同意这些条款。如果你不同意更新后的条款,你可以随时删除账户以终止与 %{domain} 的协议。 + agreement: 继续使用你在 %{domain} 的账号即表示您同意这些条款。如果你不同意更新后的条款,你可以随时删除账号以终止与 %{domain} 的协议。 changelog: 本次更新的要点如下: description: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。我们建议你在此查看变更后的服务条款: description_html: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。我们建议你在此查看变更后的服务条款。 @@ -1906,28 +1906,28 @@ zh-CN: violation: 内容违反了以下社区准则 explanation: delete_statuses: 你的一些嘟文被发现违反了一条或多条社区准则,并已被 %{instance} 的管理员删除。 - disable: 你不能再使用你的账户,但你的个人资料和其他数据保持不变。你可以请求数据备份,更改账户设置或删除账户。 + disable: 你不能再使用你的账号,但你的个人资料和其他数据保持不变。你可以请求数据备份,更改账号设置或删除账号。 mark_statuses_as_sensitive: 你的一些嘟文已经被 %{instance} 管理员标记为敏感内容。这意味着别人需要在嘟文中点击媒体,才能显示媒体预览。你可以在今后发布嘟文时自行将媒体标记为敏感内容。 sensitive: 即刻起,你上传的所有媒体文件都将被标记为敏感内容并隐藏,在点击警告后才能查看。 silence: 你可以继续使用你的账号,但只有已关注你的人才能在看到你在此服务器上的嘟文,并且你会被排除在各类公共列表之外。其他用户仍可以手动关注你。 - suspend: 你不能再使用你的账户,并且你的个人资料和其他数据都将无法访问。在大约30天内,你仍可以登录并请求数据备份,之后相关数据将被完全删除。我们会保留一些基础数据以避免封禁失效。 + suspend: 你不能再使用你的账号,并且你的个人资料和其他数据都将无法访问。在大约30天内,你仍可以登录并请求数据备份,之后相关数据将被完全删除。我们会保留一些基础数据以避免封禁失效。 reason: 理由: statuses: 被引用的嘟文: subject: delete_statuses: 你在 %{acct} 的嘟文已被删除 - disable: 你的账户 %{acct} 已被冻结 + disable: 你的账号 %{acct} 已被冻结 mark_statuses_as_sensitive: 你在 %{acct} 的嘟文已被标记为敏感内容 none: 对 %{acct} 的警告 sensitive: 你在 %{acct} 的嘟文今后将被标记为敏感内容 - silence: 你的账户 %{acct} 已被隐藏 - suspend: 你的账户 %{acct} 已被封禁 + silence: 你的账号 %{acct} 已被隐藏 + suspend: 你的账号 %{acct} 已被封禁 title: delete_statuses: 嘟文已删除 disable: 账号已冻结 mark_statuses_as_sensitive: 嘟文已被标记为敏感内容 none: 警示 - sensitive: 账户已被标记为敏感内容 - silence: 账户被隐藏 + sensitive: 账号已被标记为敏感内容 + silence: 账号被隐藏 suspend: 账号被封禁 welcome: apps_android_action: 从 Google Play 下载 @@ -1952,7 +1952,7 @@ zh-CN: follow_action: 关注 follow_step: 关注有趣的人,这就是 Mastodon 的意义所在。 follow_title: 个性化你的主页动态 - follows_subtitle: 关注知名账户 + follows_subtitle: 关注知名账号 follows_title: 推荐关注 follows_view_more: 查看更多可关注的人 hashtags_recent_count: @@ -1971,12 +1971,12 @@ zh-CN: title: "%{name},欢迎你的加入!" users: follow_limit_reached: 你不能关注超过 %{limit} 个人 - go_to_sso_account_settings: 转到您的身份提供商进行账户设置 + go_to_sso_account_settings: 转到您的身份提供商进行账号设置 invalid_otp_token: 输入的双因素认证代码无效 otp_lost_help_html: 如果你不慎丢失了所有的代码,请联系 %{email} 寻求帮助 rate_limited: 验证尝试次数过多,请稍后再试。 seamless_external_login: 你通过外部服务登录,因此密码和邮件设置不可用。 - signed_in_as: 当前登录的账户: + signed_in_as: 当前登录的账号: verification: extra_instructions_html: 提示:你网站上的链接可能是不可见的。重要的部分是 rel="me",它可以防止在具有用户生成内容的网站上冒充身份。你甚至可以在页面头部使用 link 标签而不是 a,但 HTML 必须能够在不执行 JavaScript 的情况下访问。 here_is_how: 具体方法如下: diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 39f57dd402..bbbad6f1e1 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -67,7 +67,7 @@ development environment configured with the software needed for this project. - On the _Ports_ tab "stream" setting change _Port visibility_ → _Public_ [codespace]: https://codespaces.new/mastodon/mastodon?quickstart=1&devcontainer_path=.devcontainer%2Fcodespaces%2Fdevcontainer.json -[CONTRIBUTING]: CONTRIBUTING.md +[CONTRIBUTING]: ../CONTRIBUTING.md [Dev Container extension]: https://containers.dev/supporting#dev-containers [Development Containers]: https://containers.dev/supporting [Docker]: https://docs.docker.com diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 3aa93bbba6..ad8fb0a345 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -45,7 +45,7 @@ module Mastodon def api_versions { - mastodon: 2, + mastodon: 3, } end diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 3288e72d46..f261041901 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -11,16 +11,35 @@ namespace :db do ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY - ).any? { |key| ENV.key?(key) } + ).any? { |key| ENV[key].present? } + unless ENV['IGNORE_ALREADY_SET_SECRETS'] == 'true' + puts <<~MSG + Secrets for this server have already been set, this step can likely be ignored! + In the unlikely event you need to generate new secrets, re-run this command with `IGNORE_ALREADY_SET_SECRETS=true`. + MSG + + next + end + pastel = Pastel.new puts pastel.red(<<~MSG) - WARNING: It looks like encryption secrets have already been set. Please ensure you are not changing secrets for a Mastodon installation that already uses them, as this will cause data loss and other issues that are difficult to recover from. + WARNING: It looks like encryption secrets have already been set. + WARNING: Ensure you are not changing secrets for a Mastodon installation that already uses them, as this will cause data loss and other issues that are difficult to recover from. + WARNING: Only proceed if you are absolutely sure of what you are doing! + MSG + + puts <<~MSG + If you are sure of what you are doing, add the following secret environment variables to your Mastodon environment (e.g. .env.production), ensure they are shared across all your nodes and do not change them after they are set:#{' '} + MSG + else + puts <<~MSG + Add the following secret environment variables to your Mastodon environment (e.g. .env.production), ensure they are shared across all your nodes and do not change them after they are set:#{' '} MSG end puts <<~MSG - Add the following secret environment variables to your Mastodon environment (e.g. .env.production), ensure they are shared across all your nodes and do not change them after they are set:#{' '} + # Do NOT change these variables once they are set ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=#{SecureRandom.alphanumeric(32)} ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=#{SecureRandom.alphanumeric(32)} ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=#{SecureRandom.alphanumeric(32)} diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 692fe0a507..0081b4a8f6 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -8,16 +8,10 @@ namespace :mastodon do prompt = TTY::Prompt.new env = {} - # 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 interfere with our new configuration. - ENV.delete('REDIS_URL') - ENV.delete('CACHE_REDIS_URL') - ENV.delete('SIDEKIQ_REDIS_URL') + clear_environment! begin - errors = false + errors = [] prompt.say('Your instance is identified by its domain name. Changing it afterward will break things.') env['LOCAL_DOMAIN'] = prompt.ask('Domain name:') do |q| @@ -109,7 +103,7 @@ namespace :mastodon do unless prompt.yes?('Try again?') return prompt.warn 'Nothing saved. Bye!' unless prompt.yes?('Continue anyway?') - errors = true + errors << 'Database connection could not be established.' break end end @@ -155,7 +149,7 @@ namespace :mastodon do unless prompt.yes?('Try again?') return prompt.warn 'Nothing saved. Bye!' unless prompt.yes?('Continue anyway?') - errors = true + errors << 'Redis connection could not be established.' break end end @@ -450,7 +444,7 @@ namespace :mastodon do unless prompt.yes?('Try again?') return prompt.warn 'Nothing saved. Bye!' unless prompt.yes?('Continue anyway?') - errors = true + errors << 'E-email was not sent successfully.' break end end @@ -498,7 +492,7 @@ namespace :mastodon do prompt.ok 'Done!' else prompt.error 'That failed! Perhaps your configuration is not right' - errors = true + errors << 'Preparing the database failed' end end @@ -515,14 +509,15 @@ namespace :mastodon do prompt.say 'Done!' else prompt.error 'That failed! Maybe you need swap space?' - errors = true + errors << 'Compiling assets failed.' end end end prompt.say "\n" - if errors - prompt.warn 'Your Mastodon server is set up, but there were some errors along the way, you may have to fix them.' + if errors.any? + prompt.warn 'Your Mastodon server is set up, but there were some errors along the way, you may have to fix them:' + errors.each { |error| prompt.warn "- #{error}" } else prompt.ok 'All done! You can now power on the Mastodon server 🐘' end @@ -579,6 +574,17 @@ namespace :mastodon do private + def clear_environment! + # 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 interfere with our new configuration. + + ENV.delete('REDIS_URL') + ENV.delete('CACHE_REDIS_URL') + ENV.delete('SIDEKIQ_REDIS_URL') + end + def generate_header(include_warning) default_message = "# Generated with mastodon:setup on #{Time.now.utc}\n\n" diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb index e14a7f6916..e589693b17 100644 --- a/spec/controllers/statuses_controller_spec.rb +++ b/spec/controllers/statuses_controller_spec.rb @@ -9,45 +9,6 @@ RSpec.describe StatusesController do let(:account) { Fabricate(:account) } let(:status) { Fabricate(:status, account: account) } - context 'when account is permanently suspended' do - before do - account.suspend! - account.deletion_request.destroy - - get :show, params: { account_username: account.username, id: status.id } - end - - it 'returns http gone' do - expect(response).to have_http_status(410) - end - end - - context 'when account is temporarily suspended' do - before do - account.suspend! - - get :show, params: { account_username: account.username, id: status.id } - end - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - context 'when status is a reblog' do - let(:original_account) { Fabricate(:account, domain: 'example.com') } - let(:original_status) { Fabricate(:status, account: original_account, url: 'https://example.com/123') } - let(:status) { Fabricate(:status, account: account, reblog: original_status) } - - before do - get :show, params: { account_username: status.account.username, id: status.id } - end - - it 'redirects to the original status' do - expect(response).to redirect_to(original_status.url) - end - end - context 'when status is public' do before do get :show, params: { account_username: status.account.username, id: status.id, format: format } @@ -142,17 +103,6 @@ RSpec.describe StatusesController do sign_in(user) end - context 'when account blocks user' do - before do - account.block!(user.account) - get :show, params: { account_username: status.account.username, id: status.id } - end - - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end - context 'when status is public' do before do get :show, params: { account_username: status.account.username, id: status.id, format: format } diff --git a/spec/lib/annual_report_spec.rb b/spec/lib/annual_report_spec.rb index bd4d0f3387..fa898d3ac5 100644 --- a/spec/lib/annual_report_spec.rb +++ b/spec/lib/annual_report_spec.rb @@ -13,4 +13,13 @@ RSpec.describe AnnualReport do .to change(GeneratedAnnualReport, :count).by(1) end end + + describe '.prepare' do + before { Fabricate :status } + + it 'generates records from source class which prepare data' do + expect { described_class.prepare(Time.current.year) } + .to change(AnnualReport::StatusesPerAccountCount, :count).by(1) + end + end end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index a0187b6211..2baf1fd3db 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -516,38 +516,16 @@ RSpec.describe Account do end end - describe '#attribution_domains_as_text=' do - subject { Fabricate(:account) } - - it 'sets attribution_domains accordingly' do - subject.attribution_domains_as_text = "hoge.com\nexample.com" - - expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') - end - - it 'strips leading "*."' do - subject.attribution_domains_as_text = "hoge.com\n*.example.com" - - expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') - end - - it 'strips the protocol if present' do - subject.attribution_domains_as_text = "http://hoge.com\nhttps://example.com" - - expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') - end - - it 'strips a combination of leading "*." and protocol' do - subject.attribution_domains_as_text = "http://*.hoge.com\nhttps://*.example.com" - - expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') - end - end - describe 'Normalizations' do describe 'username' do it { is_expected.to normalize(:username).from(" \u3000bob \t \u00a0 \n ").to('bob') } end + + describe 'attribution_domains' do + it { is_expected.to normalize(:attribution_domains).from(['example.com', ' example.com ', ' example.net ']).to(['example.com', 'example.net']) } + it { is_expected.to normalize(:attribution_domains).from(['https://example.com', 'http://example.net', '*.example.org']).to(['example.com', 'example.net', 'example.org']) } + it { is_expected.to normalize(:attribution_domains).from(['', ' ', nil]).to([]) } + end end describe 'Validations' do @@ -598,6 +576,9 @@ RSpec.describe Account do it { is_expected.to validate_absence_of(:inbox_url).on(:create) } it { is_expected.to validate_absence_of(:shared_inbox_url).on(:create) } it { is_expected.to validate_absence_of(:uri).on(:create) } + + it { is_expected.to allow_values([], ['example.com'], (1..100).to_a).for(:attribution_domains) } + it { is_expected.to_not allow_values(['example com'], ['@'], (1..101).to_a).for(:attribution_domains) } end context 'when account is remote' do diff --git a/spec/requests/api/v1/accounts/credentials_spec.rb b/spec/requests/api/v1/accounts/credentials_spec.rb index 0badc17e1b..c92f4c7973 100644 --- a/spec/requests/api/v1/accounts/credentials_spec.rb +++ b/spec/requests/api/v1/accounts/credentials_spec.rb @@ -64,6 +64,7 @@ RSpec.describe 'credentials API' do indexable: true, locked: false, note: 'Hello!', + attribution_domains: ['example.com'], source: { privacy: 'unlisted', sensitive: true, @@ -121,7 +122,8 @@ RSpec.describe 'credentials API' do display_name: eq("Alice Isn't Dead"), note: 'Hello!', avatar: exist, - header: exist + header: exist, + attribution_domains: ['example.com'] ) end diff --git a/spec/requests/statuses_spec.rb b/spec/requests/statuses_spec.rb new file mode 100644 index 0000000000..f86d67d405 --- /dev/null +++ b/spec/requests/statuses_spec.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Statuses' do + describe 'GET /@:account_username/:id' do + let(:account) { Fabricate(:account) } + let(:status) { Fabricate(:status, account: account) } + + context 'when signed out' do + context 'when account is permanently suspended' do + before do + account.suspend! + account.deletion_request.destroy + end + + it 'returns http gone' do + get "/@#{account.username}/#{status.id}" + + expect(response) + .to have_http_status(410) + end + end + + context 'when account is temporarily suspended' do + before { account.suspend! } + + it 'returns http forbidden' do + get "/@#{account.username}/#{status.id}" + + expect(response) + .to have_http_status(403) + end + end + + context 'when status is a reblog' do + let(:original_account) { Fabricate(:account, domain: 'example.com') } + let(:original_status) { Fabricate(:status, account: original_account, url: 'https://example.com/123') } + let(:status) { Fabricate(:status, account: account, reblog: original_status) } + + it 'redirects to the original status' do + get "/@#{status.account.username}/#{status.id}" + + expect(response) + .to redirect_to(original_status.url) + end + end + end + + context 'when signed in' do + let(:user) { Fabricate(:user) } + + before { sign_in(user) } + + context 'when account blocks user' do + before { account.block!(user.account) } + + it 'returns http not found' do + get "/@#{status.account.username}/#{status.id}" + + expect(response) + .to have_http_status(404) + end + end + end + end +end diff --git a/spec/system/settings/verifications_spec.rb b/spec/system/settings/verifications_spec.rb index 75be191c83..26197f06f0 100644 --- a/spec/system/settings/verifications_spec.rb +++ b/spec/system/settings/verifications_spec.rb @@ -15,12 +15,27 @@ RSpec.describe 'Settings verification page' do .to have_content(verification_summary) .and have_private_cache_control - fill_in attribution_field, with: 'host.example' + fill_in attribution_field, with: " example.com\n\n https://example.net" expect { click_on submit_button } - .to(change { user.account.reload.attribution_domains_as_text }) + .to(change { user.account.reload.attribution_domains }.to(['example.com', 'example.net'])) expect(page) .to have_content(success_message) + expect(find_field(attribution_field).value) + .to have_content("example.com\nexample.net") + end + + it 'rejects invalid attribution domains' do + visit settings_verification_path + + fill_in attribution_field, with: "example.com \n invalid_com" + + expect { click_on submit_button } + .to_not(change { user.account.reload.attribution_domains }) + expect(page) + .to have_content(I18n.t('activerecord.errors.messages.invalid_domain_on_line', value: 'invalid_com')) + expect(find_field(attribution_field).value) + .to have_content("example.com\ninvalid_com") end end @@ -29,6 +44,6 @@ RSpec.describe 'Settings verification page' do end def attribution_field - I18n.t('simple_form.labels.account.attribution_domains_as_text') + I18n.t('simple_form.labels.account.attribution_domains') end end diff --git a/spec/validators/lines_validator_spec.rb b/spec/validators/lines_validator_spec.rb deleted file mode 100644 index a80dbbaf3e..0000000000 --- a/spec/validators/lines_validator_spec.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe LinesValidator do - let(:record_class) do - Class.new do - include ActiveModel::Validations - - attr_accessor :text - - validates :text, lines: { maximum: 5 } - end - end - - let(:record) { record_class.new } - - describe '#validate_each' do - context 'with a nil value' do - it 'does not add errors' do - record.text = nil - - expect(record).to be_valid - expect(record.errors).to be_empty - end - end - - context 'with lines below the limit' do - it 'does not add errors' do - record.text = "hoge\n" * 5 - - expect(record).to be_valid - expect(record.errors).to be_empty - end - end - - context 'with more lines than limit' do - it 'adds an error' do - record.text = "hoge\n" * 6 - - expect(record).to_not be_valid - expect(record.errors.where(:text)).to_not be_empty - end - end - end -end diff --git a/yarn.lock b/yarn.lock index 8c07b30e32..1e8d59c37f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2310,6 +2310,17 @@ __metadata: languageName: node linkType: hard +"@formatjs/icu-messageformat-parser@npm:2.10.0": + version: 2.10.0 + resolution: "@formatjs/icu-messageformat-parser@npm:2.10.0" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.3.2" + "@formatjs/icu-skeleton-parser": "npm:1.8.12" + tslib: "npm:2" + checksum: 10c0/261d386b19b5031ac097450ebbb51518ec447c191a51616c2a3335d2d675cb37b48898b600753b45dbce92517ad842695a18aed702099243bfc132a7f800dff7 + languageName: node + linkType: hard + "@formatjs/icu-messageformat-parser@npm:2.7.10": version: 2.7.10 resolution: "@formatjs/icu-messageformat-parser@npm:2.7.10" @@ -2321,17 +2332,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.9.8": - version: 2.9.8 - resolution: "@formatjs/icu-messageformat-parser@npm:2.9.8" - dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.2" - "@formatjs/icu-skeleton-parser": "npm:1.8.12" - tslib: "npm:2" - checksum: 10c0/df97c7f24fbeb8ef49ae1371f9498ad90f231f88211bf1effb7b2e8ac3531bec67c5d9147ddcb1add0ba697e8d089729add44a9a9c5015e0e8d61e7a43f062d9 - languageName: node - linkType: hard - "@formatjs/icu-skeleton-parser@npm:1.8.12": version: 1.8.12 resolution: "@formatjs/icu-skeleton-parser@npm:1.8.12" @@ -2382,21 +2382,21 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl@npm:3.1.0": - version: 3.1.0 - resolution: "@formatjs/intl@npm:3.1.0" +"@formatjs/intl@npm:3.1.1": + version: 3.1.1 + resolution: "@formatjs/intl@npm:3.1.1" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" "@formatjs/fast-memoize": "npm:2.2.6" - "@formatjs/icu-messageformat-parser": "npm:2.9.8" - intl-messageformat: "npm:10.7.11" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" + intl-messageformat: "npm:10.7.12" tslib: "npm:2" peerDependencies: typescript: 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/a073768fffc51696eb7bd25fe1f0afdda1a0e38db3e2dd9b2fc3138ea799f00ef522f3d3083626ad3acbf913593254cfd728a6c6b08ef4f167dd132626a7e9fc + checksum: 10c0/409ba1893635348e3045089fe5dd6f489a5084ce7116798284c5879eb61c5ae3221a3f2a6d47b5d169177d6f482e632f1378d97a6e7821679a19550ccda83b13 languageName: node linkType: hard @@ -2420,11 +2420,11 @@ __metadata: languageName: node linkType: hard -"@formatjs/ts-transformer@npm:3.13.27": - version: 3.13.27 - resolution: "@formatjs/ts-transformer@npm:3.13.27" +"@formatjs/ts-transformer@npm:3.13.28": + version: 3.13.28 + resolution: "@formatjs/ts-transformer@npm:3.13.28" dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.9.8" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" "@types/json-stable-stringify": "npm:1" "@types/node": "npm:14 || 16 || 17 || 18 || 20 || 22" chalk: "npm:4" @@ -2436,7 +2436,7 @@ __metadata: peerDependenciesMeta: ts-jest: optional: true - checksum: 10c0/ab26ce081835ce2a1384172a6e24db42d48bc9f8b9b941c646fba2f01ce8370123480623d1fbc1e75f6ec90a232f8ff67b5243c5e9ad18311dc03d7061a4892b + checksum: 10c0/3ee015082c6cad4b3c33dc86cc40b69a5544cea1dc62b164d8e0d5710835bd72ea757b7a071fc9848c7b9e25073ea085c38125ba69460cb3e0cb5592b79f231a languageName: node linkType: hard @@ -5340,21 +5340,21 @@ __metadata: linkType: hard "babel-plugin-formatjs@npm:^10.5.1": - version: 10.5.30 - resolution: "babel-plugin-formatjs@npm:10.5.30" + version: 10.5.31 + resolution: "babel-plugin-formatjs@npm:10.5.31" dependencies: "@babel/core": "npm:^7.25.0" "@babel/helper-plugin-utils": "npm:^7.25.0" "@babel/plugin-syntax-jsx": "npm:^7.25.0" "@babel/traverse": "npm:^7.25.0" "@babel/types": "npm:^7.25.0" - "@formatjs/icu-messageformat-parser": "npm:2.9.8" - "@formatjs/ts-transformer": "npm:3.13.27" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" + "@formatjs/ts-transformer": "npm:3.13.28" "@types/babel__core": "npm:^7.20.5" "@types/babel__helper-plugin-utils": "npm:^7.10.3" "@types/babel__traverse": "npm:^7.20.6" tslib: "npm:2" - checksum: 10c0/cf9f17b71da9e95a402e0722cfbf4a549c984a8bb536f6b46dc187fa4b69dd2e248e6a825ea95d5ddfa2a9b09b3eb399cefa2dce1dcf52fd6e661adb99a9d3fa + checksum: 10c0/b73a0250efd97b1a76e62b63e6ca6a1962eec4c46b832ca94241ef28299c2118bea93a5c765fc2b3e95520815d91bde31450b4793b34f5ca95faf61ea2f04f77 languageName: node linkType: hard @@ -9932,15 +9932,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.7.11, intl-messageformat@npm:^10.3.5": - version: 10.7.11 - resolution: "intl-messageformat@npm:10.7.11" +"intl-messageformat@npm:10.7.12, intl-messageformat@npm:^10.3.5": + version: 10.7.12 + resolution: "intl-messageformat@npm:10.7.12" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" "@formatjs/fast-memoize": "npm:2.2.6" - "@formatjs/icu-messageformat-parser": "npm:2.9.8" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" tslib: "npm:2" - checksum: 10c0/7ccd972277cc6798038af876c830203084db6552becfa99c3706541fd67838552013f57f8ed0ed3aed03d4fba436591a83a25f913365d66ad04ee9332eee7b73 + checksum: 10c0/c91917edf14a31bd76419cc9d9d1d4c1a044bf64bc1b5db8d359940b26455d0fd6cec49ede7593b8f631aa1af749db29d719d5b2e4ceb08939f88cd0ed886b03 languageName: node linkType: hard @@ -14683,16 +14683,16 @@ __metadata: linkType: hard "react-intl@npm:^7.0.0": - version: 7.1.0 - resolution: "react-intl@npm:7.1.0" + version: 7.1.1 + resolution: "react-intl@npm:7.1.1" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" - "@formatjs/icu-messageformat-parser": "npm:2.9.8" - "@formatjs/intl": "npm:3.1.0" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" + "@formatjs/intl": "npm:3.1.1" "@types/hoist-non-react-statics": "npm:3" "@types/react": "npm:16 || 17 || 18" hoist-non-react-statics: "npm:3" - intl-messageformat: "npm:10.7.11" + intl-messageformat: "npm:10.7.12" tslib: "npm:2" peerDependencies: react: ^16.6.0 || 17 || 18 @@ -14700,7 +14700,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/9d69e316a5f5c6d31fa77f136b595079db2f75f63398cf8253d407878246dd5bcf0cc2eb4d7d4aa0646530ee58b16ce9a8c3876a5c2f0dc38fdda7e4f8c07615 + checksum: 10c0/a03dfbfd98210b176d02c54d670550a15209d08a1d43dbb5facd79705f3b38f79ae9dcc54e8645b4326fc1b215245262e84f210103df561e928113c1e2a7791c languageName: node linkType: hard