diff --git a/.eslintrc.js b/.eslintrc.js index 217ee4f1f3..27134414fc 100644 Binary files a/.eslintrc.js and b/.eslintrc.js differ diff --git a/.gitignore b/.gitignore index ce9648b2d8..29918f5d87 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,12 @@ yarn-error.log* /static-test/ /public/ /dist/ + +.idea +.DS_Store + +# surge.sh +CNAME +AUTH +CORS +ROUTER diff --git a/app/index.ejs b/app/index.ejs index 8229b0ef88..735f6e7a06 100644 --- a/app/index.ejs +++ b/app/index.ejs @@ -5,6 +5,7 @@ + diff --git a/app/soapbox/__fixtures__/intlMessages.json b/app/soapbox/__fixtures__/intlMessages.json index 2423f657c6..093f4fc4fb 100644 --- a/app/soapbox/__fixtures__/intlMessages.json +++ b/app/soapbox/__fixtures__/intlMessages.json @@ -106,7 +106,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", @@ -584,7 +584,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", diff --git a/app/soapbox/actions/accounts.js b/app/soapbox/actions/accounts.js index 4530ec705f..16ce446770 100644 Binary files a/app/soapbox/actions/accounts.js and b/app/soapbox/actions/accounts.js differ diff --git a/app/soapbox/actions/admin.js b/app/soapbox/actions/admin.js index a48636d0e4..8e3de078e0 100644 Binary files a/app/soapbox/actions/admin.js and b/app/soapbox/actions/admin.js differ diff --git a/app/soapbox/actions/auth.js b/app/soapbox/actions/auth.js index 128df10275..eafb232125 100644 Binary files a/app/soapbox/actions/auth.js and b/app/soapbox/actions/auth.js differ diff --git a/app/soapbox/actions/bookmarks.js b/app/soapbox/actions/bookmarks.js index 3c8eec5468..cf1ca81132 100644 Binary files a/app/soapbox/actions/bookmarks.js and b/app/soapbox/actions/bookmarks.js differ diff --git a/app/soapbox/actions/chats.js b/app/soapbox/actions/chats.js index 5fa6811eee..2ca996cfef 100644 Binary files a/app/soapbox/actions/chats.js and b/app/soapbox/actions/chats.js differ diff --git a/app/soapbox/actions/compose.js b/app/soapbox/actions/compose.js index 421df58832..124ef69c4b 100644 Binary files a/app/soapbox/actions/compose.js and b/app/soapbox/actions/compose.js differ diff --git a/app/soapbox/actions/directory.js b/app/soapbox/actions/directory.js new file mode 100644 index 0000000000..35e699703e Binary files /dev/null and b/app/soapbox/actions/directory.js differ diff --git a/app/soapbox/actions/instance.js b/app/soapbox/actions/instance.js index ec77742b2e..bc3b957588 100644 Binary files a/app/soapbox/actions/instance.js and b/app/soapbox/actions/instance.js differ diff --git a/app/soapbox/actions/interactions.js b/app/soapbox/actions/interactions.js index 1e2d729f17..c677891179 100644 Binary files a/app/soapbox/actions/interactions.js and b/app/soapbox/actions/interactions.js differ diff --git a/app/soapbox/actions/lists.js b/app/soapbox/actions/lists.js index 68171cbe3e..a04bbc6f11 100644 Binary files a/app/soapbox/actions/lists.js and b/app/soapbox/actions/lists.js differ diff --git a/app/soapbox/actions/moderation.js b/app/soapbox/actions/moderation.js index cb84803bde..52652978b8 100644 Binary files a/app/soapbox/actions/moderation.js and b/app/soapbox/actions/moderation.js differ diff --git a/app/soapbox/actions/push_notifications/registerer.js b/app/soapbox/actions/push_notifications/registerer.js index 156641c2be..2dca31fe85 100644 Binary files a/app/soapbox/actions/push_notifications/registerer.js and b/app/soapbox/actions/push_notifications/registerer.js differ diff --git a/app/soapbox/actions/search.js b/app/soapbox/actions/search.js index 6f1621ad40..6764dc534b 100644 Binary files a/app/soapbox/actions/search.js and b/app/soapbox/actions/search.js differ diff --git a/app/soapbox/actions/settings.js b/app/soapbox/actions/settings.js index 3062e669e0..1bfaef7a24 100644 Binary files a/app/soapbox/actions/settings.js and b/app/soapbox/actions/settings.js differ diff --git a/app/soapbox/actions/soapbox.js b/app/soapbox/actions/soapbox.js index 64fbe18912..4358e9f1d9 100644 Binary files a/app/soapbox/actions/soapbox.js and b/app/soapbox/actions/soapbox.js differ diff --git a/app/soapbox/actions/statuses.js b/app/soapbox/actions/statuses.js index eadcd59f5e..ec5811cbaa 100644 Binary files a/app/soapbox/actions/statuses.js and b/app/soapbox/actions/statuses.js differ diff --git a/app/soapbox/components/autosuggest_input.js b/app/soapbox/components/autosuggest_input.js index 8f750ab3f3..cf5c8f04ba 100644 Binary files a/app/soapbox/components/autosuggest_input.js and b/app/soapbox/components/autosuggest_input.js differ diff --git a/app/soapbox/components/domain.js b/app/soapbox/components/domain.js index 35c1b67ef4..15f0b5b903 100644 Binary files a/app/soapbox/components/domain.js and b/app/soapbox/components/domain.js differ diff --git a/app/soapbox/components/dropdown_menu.js b/app/soapbox/components/dropdown_menu.js index 2b0b01bd80..868e42066a 100644 Binary files a/app/soapbox/components/dropdown_menu.js and b/app/soapbox/components/dropdown_menu.js differ diff --git a/app/soapbox/components/hashtag.js b/app/soapbox/components/hashtag.js index 2872a236a2..a54daf656d 100644 Binary files a/app/soapbox/components/hashtag.js and b/app/soapbox/components/hashtag.js differ diff --git a/app/soapbox/components/helmet.js b/app/soapbox/components/helmet.js index 4b1454ffae..3b96b8c101 100644 Binary files a/app/soapbox/components/helmet.js and b/app/soapbox/components/helmet.js differ diff --git a/app/soapbox/components/icon_button.js b/app/soapbox/components/icon_button.js index d7c036f12d..aab5739d32 100644 Binary files a/app/soapbox/components/icon_button.js and b/app/soapbox/components/icon_button.js differ diff --git a/app/soapbox/components/loading_spinner.js b/app/soapbox/components/loading_spinner.js new file mode 100644 index 0000000000..a632454dbe Binary files /dev/null and b/app/soapbox/components/loading_spinner.js differ diff --git a/app/soapbox/components/material_status.js b/app/soapbox/components/material_status.js index 9ff2425071..6454497c5c 100644 Binary files a/app/soapbox/components/material_status.js and b/app/soapbox/components/material_status.js differ diff --git a/app/soapbox/components/poll.js b/app/soapbox/components/poll.js index 795b87fbd2..a5b8b038ed 100644 Binary files a/app/soapbox/components/poll.js and b/app/soapbox/components/poll.js differ diff --git a/app/soapbox/components/primary_navigation.js b/app/soapbox/components/primary_navigation.js index b9c1c6e72b..5bac11d339 100644 Binary files a/app/soapbox/components/primary_navigation.js and b/app/soapbox/components/primary_navigation.js differ diff --git a/app/soapbox/components/profile_hover_card.js b/app/soapbox/components/profile_hover_card.js index c9d1024e74..879bf92e3a 100644 Binary files a/app/soapbox/components/profile_hover_card.js and b/app/soapbox/components/profile_hover_card.js differ diff --git a/app/soapbox/components/pull_to_refresh.js b/app/soapbox/components/pull_to_refresh.js new file mode 100644 index 0000000000..89dfd6b4a0 Binary files /dev/null and b/app/soapbox/components/pull_to_refresh.js differ diff --git a/app/soapbox/components/pullable.js b/app/soapbox/components/pullable.js new file mode 100644 index 0000000000..3d2f83edb8 Binary files /dev/null and b/app/soapbox/components/pullable.js differ diff --git a/app/soapbox/components/radio_button.js b/app/soapbox/components/radio_button.js new file mode 100644 index 0000000000..7500578daa Binary files /dev/null and b/app/soapbox/components/radio_button.js differ diff --git a/app/soapbox/components/scrollable_list.js b/app/soapbox/components/scrollable_list.js index 9c7da2f315..4a2164b478 100644 Binary files a/app/soapbox/components/scrollable_list.js and b/app/soapbox/components/scrollable_list.js differ diff --git a/app/soapbox/components/showable_password.js b/app/soapbox/components/showable_password.js new file mode 100644 index 0000000000..7e8247cf88 Binary files /dev/null and b/app/soapbox/components/showable_password.js differ diff --git a/app/soapbox/components/sidebar_menu.js b/app/soapbox/components/sidebar_menu.js index b5b90fdd12..70cc1cd90d 100644 Binary files a/app/soapbox/components/sidebar_menu.js and b/app/soapbox/components/sidebar_menu.js differ diff --git a/app/soapbox/components/status.js b/app/soapbox/components/status.js index c13a4d6a1d..89f0fe934b 100644 Binary files a/app/soapbox/components/status.js and b/app/soapbox/components/status.js differ diff --git a/app/soapbox/components/status_action_bar.js b/app/soapbox/components/status_action_bar.js index 4baad56c44..d552a82b82 100644 Binary files a/app/soapbox/components/status_action_bar.js and b/app/soapbox/components/status_action_bar.js differ diff --git a/app/soapbox/components/status_content.js b/app/soapbox/components/status_content.js index 508e2de1f3..efbe81b5db 100644 Binary files a/app/soapbox/components/status_content.js and b/app/soapbox/components/status_content.js differ diff --git a/app/soapbox/components/status_list.js b/app/soapbox/components/status_list.js index a48f63e740..289ec91d53 100644 Binary files a/app/soapbox/components/status_list.js and b/app/soapbox/components/status_list.js differ diff --git a/app/soapbox/components/status_reply_mentions.js b/app/soapbox/components/status_reply_mentions.js new file mode 100644 index 0000000000..580880fee4 Binary files /dev/null and b/app/soapbox/components/status_reply_mentions.js differ diff --git a/app/soapbox/components/thumb_navigation.js b/app/soapbox/components/thumb_navigation.js index 06b27161de..ba51730975 100644 Binary files a/app/soapbox/components/thumb_navigation.js and b/app/soapbox/components/thumb_navigation.js differ diff --git a/app/soapbox/containers/poll_container.js b/app/soapbox/containers/poll_container.js index dc35964f5a..ad9672120d 100644 Binary files a/app/soapbox/containers/poll_container.js and b/app/soapbox/containers/poll_container.js differ diff --git a/app/soapbox/containers/soapbox.js b/app/soapbox/containers/soapbox.js index 279cad4036..a4e48c5871 100644 Binary files a/app/soapbox/containers/soapbox.js and b/app/soapbox/containers/soapbox.js differ diff --git a/app/soapbox/containers/status_container.js b/app/soapbox/containers/status_container.js index 95c59b4b26..d817344859 100644 Binary files a/app/soapbox/containers/status_container.js and b/app/soapbox/containers/status_container.js differ diff --git a/app/soapbox/features/account/components/header.js b/app/soapbox/features/account/components/header.js index 93b75108d4..66830bc6c4 100644 Binary files a/app/soapbox/features/account/components/header.js and b/app/soapbox/features/account/components/header.js differ diff --git a/app/soapbox/features/account_gallery/index.js b/app/soapbox/features/account_gallery/index.js index 843f83e4d6..9a4bedf544 100644 Binary files a/app/soapbox/features/account_gallery/index.js and b/app/soapbox/features/account_gallery/index.js differ diff --git a/app/soapbox/features/account_timeline/components/header.js b/app/soapbox/features/account_timeline/components/header.js index aba9af2071..e2b9d32073 100644 Binary files a/app/soapbox/features/account_timeline/components/header.js and b/app/soapbox/features/account_timeline/components/header.js differ diff --git a/app/soapbox/features/account_timeline/components/moved_note.js b/app/soapbox/features/account_timeline/components/moved_note.js index b3c2cae13e..0616827f95 100644 Binary files a/app/soapbox/features/account_timeline/components/moved_note.js and b/app/soapbox/features/account_timeline/components/moved_note.js differ diff --git a/app/soapbox/features/account_timeline/containers/header_container.js b/app/soapbox/features/account_timeline/containers/header_container.js index 7ce9f8e9a3..7513232cd7 100644 Binary files a/app/soapbox/features/account_timeline/containers/header_container.js and b/app/soapbox/features/account_timeline/containers/header_container.js differ diff --git a/app/soapbox/features/account_timeline/index.js b/app/soapbox/features/account_timeline/index.js index 4d4d916eaf..9172b26af1 100644 Binary files a/app/soapbox/features/account_timeline/index.js and b/app/soapbox/features/account_timeline/index.js differ diff --git a/app/soapbox/features/admin/components/report.js b/app/soapbox/features/admin/components/report.js index 297b0d55d6..8ee02407ee 100644 Binary files a/app/soapbox/features/admin/components/report.js and b/app/soapbox/features/admin/components/report.js differ diff --git a/app/soapbox/features/admin/components/report_status.js b/app/soapbox/features/admin/components/report_status.js index 11110adb8e..3f73e904ae 100644 Binary files a/app/soapbox/features/admin/components/report_status.js and b/app/soapbox/features/admin/components/report_status.js differ diff --git a/app/soapbox/features/admin/components/unapproved_account.js b/app/soapbox/features/admin/components/unapproved_account.js index 621ffbe4ba..eeb84c9110 100644 Binary files a/app/soapbox/features/admin/components/unapproved_account.js and b/app/soapbox/features/admin/components/unapproved_account.js differ diff --git a/app/soapbox/features/admin/index.js b/app/soapbox/features/admin/index.js index b09affd660..e80ae12311 100644 Binary files a/app/soapbox/features/admin/index.js and b/app/soapbox/features/admin/index.js differ diff --git a/app/soapbox/features/admin/reports.js b/app/soapbox/features/admin/reports.js index 141db1d451..ac34352c6c 100644 Binary files a/app/soapbox/features/admin/reports.js and b/app/soapbox/features/admin/reports.js differ diff --git a/app/soapbox/features/admin/user_index.js b/app/soapbox/features/admin/user_index.js index 4406a0aad4..53f3c2ecbc 100644 Binary files a/app/soapbox/features/admin/user_index.js and b/app/soapbox/features/admin/user_index.js differ diff --git a/app/soapbox/features/aliases/components/account.js b/app/soapbox/features/aliases/components/account.js index ff4ab069a1..0e67b2238d 100644 Binary files a/app/soapbox/features/aliases/components/account.js and b/app/soapbox/features/aliases/components/account.js differ diff --git a/app/soapbox/features/aliases/components/search.js b/app/soapbox/features/aliases/components/search.js index 1416b03904..4230639446 100644 Binary files a/app/soapbox/features/aliases/components/search.js and b/app/soapbox/features/aliases/components/search.js differ diff --git a/app/soapbox/features/auth_login/components/__tests__/__snapshots__/captcha-test.js.snap b/app/soapbox/features/auth_login/components/__tests__/__snapshots__/captcha-test.js.snap index 333d04f8db..a38a9c5a98 100644 --- a/app/soapbox/features/auth_login/components/__tests__/__snapshots__/captcha-test.js.snap +++ b/app/soapbox/features/auth_login/components/__tests__/__snapshots__/captcha-test.js.snap @@ -14,7 +14,9 @@ exports[` renders correctly 1`] = ` className="input required" > renders for Mastodon 1`] = ` > renders for Mastodon 1`] = ` />
+

renders for Pleroma 1`] = ` > renders for Pleroma 1`] = ` />

+

renders correctly on load 1`] = ` > renders correctly on load 1`] = ` />

+

renders correctly 1`] = ` > `; diff --git a/app/soapbox/features/forms/index.js b/app/soapbox/features/forms/index.js index 0ad1f361dc..816a5e61ae 100644 Binary files a/app/soapbox/features/forms/index.js and b/app/soapbox/features/forms/index.js differ diff --git a/app/soapbox/features/groups/timeline/components/header.js b/app/soapbox/features/groups/timeline/components/header.js index 34d0bb2c53..3dcf522a28 100644 Binary files a/app/soapbox/features/groups/timeline/components/header.js and b/app/soapbox/features/groups/timeline/components/header.js differ diff --git a/app/soapbox/features/home_timeline/index.js b/app/soapbox/features/home_timeline/index.js index d746e99919..51d96beb5f 100644 Binary files a/app/soapbox/features/home_timeline/index.js and b/app/soapbox/features/home_timeline/index.js differ diff --git a/app/soapbox/features/intentional_error/index.js b/app/soapbox/features/intentional_error/index.js new file mode 100644 index 0000000000..b3d7fa0f71 Binary files /dev/null and b/app/soapbox/features/intentional_error/index.js differ diff --git a/app/soapbox/features/list_adder/components/list.js b/app/soapbox/features/list_adder/components/list.js index 9d5957f060..159e9a01ee 100644 Binary files a/app/soapbox/features/list_adder/components/list.js and b/app/soapbox/features/list_adder/components/list.js differ diff --git a/app/soapbox/features/list_adder/index.js b/app/soapbox/features/list_adder/index.js index af15b4485b..0c159bc906 100644 Binary files a/app/soapbox/features/list_adder/index.js and b/app/soapbox/features/list_adder/index.js differ diff --git a/app/soapbox/features/list_editor/components/account.js b/app/soapbox/features/list_editor/components/account.js index 1379ad3367..2ef3ed097c 100644 Binary files a/app/soapbox/features/list_editor/components/account.js and b/app/soapbox/features/list_editor/components/account.js differ diff --git a/app/soapbox/features/list_editor/components/search.js b/app/soapbox/features/list_editor/components/search.js index 0f300a6e34..c3d8837454 100644 Binary files a/app/soapbox/features/list_editor/components/search.js and b/app/soapbox/features/list_editor/components/search.js differ diff --git a/app/soapbox/features/list_editor/index.js b/app/soapbox/features/list_editor/index.js index 004f41d598..1e07ce8533 100644 Binary files a/app/soapbox/features/list_editor/index.js and b/app/soapbox/features/list_editor/index.js differ diff --git a/app/soapbox/features/lists/index.js b/app/soapbox/features/lists/index.js index 4a26624bad..0fa072551a 100644 Binary files a/app/soapbox/features/lists/index.js and b/app/soapbox/features/lists/index.js differ diff --git a/app/soapbox/features/mentions/index.js b/app/soapbox/features/mentions/index.js new file mode 100644 index 0000000000..d77e7b8f2e Binary files /dev/null and b/app/soapbox/features/mentions/index.js differ diff --git a/app/soapbox/features/notifications/components/clear_column_button.js b/app/soapbox/features/notifications/components/clear_column_button.js index 4218f662d7..bbf0e99bf1 100644 Binary files a/app/soapbox/features/notifications/components/clear_column_button.js and b/app/soapbox/features/notifications/components/clear_column_button.js differ diff --git a/app/soapbox/features/notifications/components/filter_bar.js b/app/soapbox/features/notifications/components/filter_bar.js index 38f11feff6..f0802f66b9 100644 Binary files a/app/soapbox/features/notifications/components/filter_bar.js and b/app/soapbox/features/notifications/components/filter_bar.js differ diff --git a/app/soapbox/features/notifications/components/follow_request.js b/app/soapbox/features/notifications/components/follow_request.js index c15d8de23c..d1c9c6402a 100644 Binary files a/app/soapbox/features/notifications/components/follow_request.js and b/app/soapbox/features/notifications/components/follow_request.js differ diff --git a/app/soapbox/features/notifications/components/notification.js b/app/soapbox/features/notifications/components/notification.js index 9fc3300a80..b16d0b542d 100644 Binary files a/app/soapbox/features/notifications/components/notification.js and b/app/soapbox/features/notifications/components/notification.js differ diff --git a/app/soapbox/features/notifications/index.js b/app/soapbox/features/notifications/index.js index bea5e82a41..58f567f7d4 100644 Binary files a/app/soapbox/features/notifications/index.js and b/app/soapbox/features/notifications/index.js differ diff --git a/app/soapbox/features/pinned_statuses/index.js b/app/soapbox/features/pinned_statuses/index.js index bfa57417e0..5221d5c9b3 100644 Binary files a/app/soapbox/features/pinned_statuses/index.js and b/app/soapbox/features/pinned_statuses/index.js differ diff --git a/app/soapbox/features/placeholder/components/placeholder_card.js b/app/soapbox/features/placeholder/components/placeholder_card.js new file mode 100644 index 0000000000..81df754928 Binary files /dev/null and b/app/soapbox/features/placeholder/components/placeholder_card.js differ diff --git a/app/soapbox/features/placeholder/components/placeholder_chat.js b/app/soapbox/features/placeholder/components/placeholder_chat.js new file mode 100644 index 0000000000..062cfee265 Binary files /dev/null and b/app/soapbox/features/placeholder/components/placeholder_chat.js differ diff --git a/app/soapbox/features/placeholder/components/placeholder_media_gallery.js b/app/soapbox/features/placeholder/components/placeholder_media_gallery.js new file mode 100644 index 0000000000..d44261e6ca Binary files /dev/null and b/app/soapbox/features/placeholder/components/placeholder_media_gallery.js differ diff --git a/app/soapbox/features/placeholder/components/placeholder_status_content.js b/app/soapbox/features/placeholder/components/placeholder_status_content.js index f3f4e951c8..b51fa44c15 100644 Binary files a/app/soapbox/features/placeholder/components/placeholder_status_content.js and b/app/soapbox/features/placeholder/components/placeholder_status_content.js differ diff --git a/app/soapbox/features/preferences/index.js b/app/soapbox/features/preferences/index.js index e95a79eda6..14e41fbfee 100644 Binary files a/app/soapbox/features/preferences/index.js and b/app/soapbox/features/preferences/index.js differ diff --git a/app/soapbox/features/public_layout/components/header.js b/app/soapbox/features/public_layout/components/header.js index 3c87739e6d..5f7d065e29 100644 Binary files a/app/soapbox/features/public_layout/components/header.js and b/app/soapbox/features/public_layout/components/header.js differ diff --git a/app/soapbox/features/public_timeline/index.js b/app/soapbox/features/public_timeline/index.js index 8083cf67e7..1b3b0e3587 100644 Binary files a/app/soapbox/features/public_timeline/index.js and b/app/soapbox/features/public_timeline/index.js differ diff --git a/app/soapbox/features/reactions/index.js b/app/soapbox/features/reactions/index.js index 30de2d33ab..5750c3053c 100644 Binary files a/app/soapbox/features/reactions/index.js and b/app/soapbox/features/reactions/index.js differ diff --git a/app/soapbox/features/reblogs/index.js b/app/soapbox/features/reblogs/index.js index 52e54017cb..ea536940c1 100644 Binary files a/app/soapbox/features/reblogs/index.js and b/app/soapbox/features/reblogs/index.js differ diff --git a/app/soapbox/features/remote_timeline/index.js b/app/soapbox/features/remote_timeline/index.js index 337081bb6a..4aa5156612 100644 Binary files a/app/soapbox/features/remote_timeline/index.js and b/app/soapbox/features/remote_timeline/index.js differ diff --git a/app/soapbox/features/reply_mentions/account.js b/app/soapbox/features/reply_mentions/account.js new file mode 100644 index 0000000000..c9da9b6a40 Binary files /dev/null and b/app/soapbox/features/reply_mentions/account.js differ diff --git a/app/soapbox/features/scheduled_statuses/components/scheduled_status.js b/app/soapbox/features/scheduled_statuses/components/scheduled_status.js index 5226125fc0..2295a0d706 100644 Binary files a/app/soapbox/features/scheduled_statuses/components/scheduled_status.js and b/app/soapbox/features/scheduled_statuses/components/scheduled_status.js differ diff --git a/app/soapbox/features/scheduled_statuses/components/scheduled_status_action_bar.js b/app/soapbox/features/scheduled_statuses/components/scheduled_status_action_bar.js index e248c0eaf1..f505eeacdf 100644 Binary files a/app/soapbox/features/scheduled_statuses/components/scheduled_status_action_bar.js and b/app/soapbox/features/scheduled_statuses/components/scheduled_status_action_bar.js differ diff --git a/app/soapbox/features/search/index.js b/app/soapbox/features/search/index.js index 48398b7498..cb11484604 100644 Binary files a/app/soapbox/features/search/index.js and b/app/soapbox/features/search/index.js differ diff --git a/app/soapbox/features/security/index.js b/app/soapbox/features/security/index.js index 2327f70a42..e19b1f0b71 100644 Binary files a/app/soapbox/features/security/index.js and b/app/soapbox/features/security/index.js differ diff --git a/app/soapbox/features/security/mfa_form.js b/app/soapbox/features/security/mfa_form.js index 79c86551cd..78525af772 100644 Binary files a/app/soapbox/features/security/mfa_form.js and b/app/soapbox/features/security/mfa_form.js differ diff --git a/app/soapbox/features/soapbox_config/index.js b/app/soapbox/features/soapbox_config/index.js index 02de151dcf..e3e8d93b6d 100644 Binary files a/app/soapbox/features/soapbox_config/index.js and b/app/soapbox/features/soapbox_config/index.js differ diff --git a/app/soapbox/features/status/components/action_bar.js b/app/soapbox/features/status/components/action_bar.js index 9dbc739231..a3f42adb99 100644 Binary files a/app/soapbox/features/status/components/action_bar.js and b/app/soapbox/features/status/components/action_bar.js differ diff --git a/app/soapbox/features/status/components/card.js b/app/soapbox/features/status/components/card.js index 6dc2ef963e..2653f9304c 100644 Binary files a/app/soapbox/features/status/components/card.js and b/app/soapbox/features/status/components/card.js differ diff --git a/app/soapbox/features/status/components/detailed_status.js b/app/soapbox/features/status/components/detailed_status.js index 91f0376e7c..2e8d0944eb 100644 Binary files a/app/soapbox/features/status/components/detailed_status.js and b/app/soapbox/features/status/components/detailed_status.js differ diff --git a/app/soapbox/features/status/index.js b/app/soapbox/features/status/index.js index 9a3bcbb5ce..3fdf66d72d 100644 Binary files a/app/soapbox/features/status/index.js and b/app/soapbox/features/status/index.js differ diff --git a/app/soapbox/features/ui/components/accordion.js b/app/soapbox/features/ui/components/accordion.js index 2697ee5583..e537c94710 100644 Binary files a/app/soapbox/features/ui/components/accordion.js and b/app/soapbox/features/ui/components/accordion.js differ diff --git a/app/soapbox/features/ui/components/action_button.js b/app/soapbox/features/ui/components/action_button.js index e55b41142c..152f6f467d 100644 Binary files a/app/soapbox/features/ui/components/action_button.js and b/app/soapbox/features/ui/components/action_button.js differ diff --git a/app/soapbox/features/ui/components/actions_modal.js b/app/soapbox/features/ui/components/actions_modal.js index 4a103a28e6..982ee7122a 100644 Binary files a/app/soapbox/features/ui/components/actions_modal.js and b/app/soapbox/features/ui/components/actions_modal.js differ diff --git a/app/soapbox/features/ui/components/column.js b/app/soapbox/features/ui/components/column.js index 19ad84a02c..c4a1be2dcf 100644 Binary files a/app/soapbox/features/ui/components/column.js and b/app/soapbox/features/ui/components/column.js differ diff --git a/app/soapbox/features/ui/components/column_forbidden.js b/app/soapbox/features/ui/components/column_forbidden.js new file mode 100644 index 0000000000..d57d2f5474 Binary files /dev/null and b/app/soapbox/features/ui/components/column_forbidden.js differ diff --git a/app/soapbox/features/ui/components/column_link.js b/app/soapbox/features/ui/components/column_link.js index 3522dbfafa..b85d0d0b7b 100644 Binary files a/app/soapbox/features/ui/components/column_link.js and b/app/soapbox/features/ui/components/column_link.js differ diff --git a/app/soapbox/features/ui/components/column_loading.js b/app/soapbox/features/ui/components/column_loading.js index 7e710f2e35..7ade977e2f 100644 Binary files a/app/soapbox/features/ui/components/column_loading.js and b/app/soapbox/features/ui/components/column_loading.js differ diff --git a/app/soapbox/features/ui/components/columns_area.js b/app/soapbox/features/ui/components/columns_area.js index 57f1cd75f2..3f74e19d6d 100644 Binary files a/app/soapbox/features/ui/components/columns_area.js and b/app/soapbox/features/ui/components/columns_area.js differ diff --git a/app/soapbox/features/ui/components/compose_modal.js b/app/soapbox/features/ui/components/compose_modal.js index 9b24f9429a..6583986267 100644 Binary files a/app/soapbox/features/ui/components/compose_modal.js and b/app/soapbox/features/ui/components/compose_modal.js differ diff --git a/app/soapbox/features/ui/components/hotkeys_modal.js b/app/soapbox/features/ui/components/hotkeys_modal.js index 6d1434135a..efbc8573f5 100644 Binary files a/app/soapbox/features/ui/components/hotkeys_modal.js and b/app/soapbox/features/ui/components/hotkeys_modal.js differ diff --git a/app/soapbox/features/ui/components/instance_info_panel.js b/app/soapbox/features/ui/components/instance_info_panel.js index 57c1bdabdc..c1e192cf68 100644 Binary files a/app/soapbox/features/ui/components/instance_info_panel.js and b/app/soapbox/features/ui/components/instance_info_panel.js differ diff --git a/app/soapbox/features/ui/components/instance_moderation_panel.js b/app/soapbox/features/ui/components/instance_moderation_panel.js index 693940540b..719813edbe 100644 Binary files a/app/soapbox/features/ui/components/instance_moderation_panel.js and b/app/soapbox/features/ui/components/instance_moderation_panel.js differ diff --git a/app/soapbox/features/ui/components/link_footer.js b/app/soapbox/features/ui/components/link_footer.js index 6ea917cf29..f85caf09a2 100644 Binary files a/app/soapbox/features/ui/components/link_footer.js and b/app/soapbox/features/ui/components/link_footer.js differ diff --git a/app/soapbox/features/ui/components/media_modal.js b/app/soapbox/features/ui/components/media_modal.js index b93e23edf7..ce002d1c45 100644 Binary files a/app/soapbox/features/ui/components/media_modal.js and b/app/soapbox/features/ui/components/media_modal.js differ diff --git a/app/soapbox/features/ui/components/modal_root.js b/app/soapbox/features/ui/components/modal_root.js index eed1278aa0..dd5d4970be 100644 Binary files a/app/soapbox/features/ui/components/modal_root.js and b/app/soapbox/features/ui/components/modal_root.js differ diff --git a/app/soapbox/features/ui/components/pending_status.js b/app/soapbox/features/ui/components/pending_status.js index dd93279795..44830822a3 100644 Binary files a/app/soapbox/features/ui/components/pending_status.js and b/app/soapbox/features/ui/components/pending_status.js differ diff --git a/app/soapbox/features/ui/components/profile_dropdown.js b/app/soapbox/features/ui/components/profile_dropdown.js index 565be4e105..355e4f2267 100644 Binary files a/app/soapbox/features/ui/components/profile_dropdown.js and b/app/soapbox/features/ui/components/profile_dropdown.js differ diff --git a/app/soapbox/features/ui/components/reply_mentions_modal.js b/app/soapbox/features/ui/components/reply_mentions_modal.js new file mode 100644 index 0000000000..f034eacede Binary files /dev/null and b/app/soapbox/features/ui/components/reply_mentions_modal.js differ diff --git a/app/soapbox/features/ui/components/report_modal.js b/app/soapbox/features/ui/components/report_modal.js index fd34da4060..25fe49e314 100644 Binary files a/app/soapbox/features/ui/components/report_modal.js and b/app/soapbox/features/ui/components/report_modal.js differ diff --git a/app/soapbox/features/ui/components/tabs_bar.js b/app/soapbox/features/ui/components/tabs_bar.js index a4b1d5bb5b..474e65cca8 100644 Binary files a/app/soapbox/features/ui/components/tabs_bar.js and b/app/soapbox/features/ui/components/tabs_bar.js differ diff --git a/app/soapbox/features/ui/components/trends_panel.js b/app/soapbox/features/ui/components/trends_panel.js index 56e5f92555..72af6480a8 100644 Binary files a/app/soapbox/features/ui/components/trends_panel.js and b/app/soapbox/features/ui/components/trends_panel.js differ diff --git a/app/soapbox/features/ui/components/unauthorized_modal.js b/app/soapbox/features/ui/components/unauthorized_modal.js index 4a7167e6e3..0e1429d8df 100644 Binary files a/app/soapbox/features/ui/components/unauthorized_modal.js and b/app/soapbox/features/ui/components/unauthorized_modal.js differ diff --git a/app/soapbox/features/ui/index.js b/app/soapbox/features/ui/index.js index 83f1bbbec2..2de0dcbfb1 100644 Binary files a/app/soapbox/features/ui/index.js and b/app/soapbox/features/ui/index.js differ diff --git a/app/soapbox/features/ui/util/async-components.js b/app/soapbox/features/ui/util/async-components.js index 1e337f682f..69dd8aff6b 100644 Binary files a/app/soapbox/features/ui/util/async-components.js and b/app/soapbox/features/ui/util/async-components.js differ diff --git a/app/soapbox/features/ui/util/pending_status_builder.js b/app/soapbox/features/ui/util/pending_status_builder.js index 191a99f1d4..241abdbdb2 100644 Binary files a/app/soapbox/features/ui/util/pending_status_builder.js and b/app/soapbox/features/ui/util/pending_status_builder.js differ diff --git a/app/soapbox/features/ui/util/react_router_helpers.js b/app/soapbox/features/ui/util/react_router_helpers.js index 4a636a738b..af0b408009 100644 Binary files a/app/soapbox/features/ui/util/react_router_helpers.js and b/app/soapbox/features/ui/util/react_router_helpers.js differ diff --git a/app/soapbox/globals.js b/app/soapbox/globals.js new file mode 100644 index 0000000000..3b49e1fe67 Binary files /dev/null and b/app/soapbox/globals.js differ diff --git a/app/soapbox/locales/ast.json b/app/soapbox/locales/ast.json index 4722504dfb..3cb2662118 100644 --- a/app/soapbox/locales/ast.json +++ b/app/soapbox/locales/ast.json @@ -255,7 +255,7 @@ "confirmations.delete_list.confirm": "Desaniciar", "confirmations.delete_list.message": "¿De xuru que quies desaniciar dafechu esta llista?", "confirmations.domain_block.confirm": "Anubrir tol dominiu", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "¿De xuru que quies silenciar a {name}?", "confirmations.redraft.confirm": "Desaniciar y reeditar", diff --git a/app/soapbox/locales/br.json b/app/soapbox/locales/br.json index 91785dc40a..2f167b2fdb 100644 --- a/app/soapbox/locales/br.json +++ b/app/soapbox/locales/br.json @@ -255,7 +255,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", diff --git a/app/soapbox/locales/de.json b/app/soapbox/locales/de.json index faeb4b97e7..742f526331 100644 --- a/app/soapbox/locales/de.json +++ b/app/soapbox/locales/de.json @@ -1,15 +1,15 @@ { "about.also_available": "Available in:", - "accordion.collapse": "Collapse", - "accordion.expand": "Expand", + "accordion.collapse": "Einklappen", + "accordion.expand": "Ausklappen", "account.add_or_remove_from_list": "Hinzufügen oder Entfernen von Listen", "account.badges.bot": "Bot", "account.block": "@{name} blockieren", "account.block_domain": "Alles von {domain} verstecken", "account.blocked": "Blockiert", - "account.chat": "Chat with @{name}", - "account.column_settings.title": "Acccount timeline settings", - "account.deactivated": "Deactivated", + "account.chat": "Mit @{name} chatten", + "account.column_settings.title": "Einstellung für die Zeitleiste dieses Accounts", + "account.deactivated": "Deaktiviert", "account.deactivated_description": "Dieser Account wurde deaktiviert.", "account.direct": "Direktnachricht an @{name}", "account.domain_blocked": "Domain versteckt", @@ -35,44 +35,44 @@ "account.posts_with_replies": "Beiträge und Antworten", "account.profile": "Profil", "account.register": "Registrieren", - "account.remote_follow": "Remote follow", + "account.remote_follow": "Von anderer Instanz folgen", "account.report": "@{name} melden", "account.requested": "Warte auf Bestätigung. Klicke zum Abbrechen", "account.requested_small": "Warte auf Bestätigung", "account.share": "Profil von @{name} teilen", "account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen", - "account.subscribe": "Subscribe to notifications from @{name}", - "account.subscribed": "Subscribed", + "account.subscribe": "Benachrichtigungen von @{name} abonnieren", + "account.subscribed": "Abonniert", "account.unblock": "@{name} entblocken", "account.unblock_domain": "{domain} wieder anzeigen", "account.unendorse": "Nicht auf Profil hervorheben", "account.unfollow": "Entfolgen", "account.unmute": "@{name} nicht mehr stummschalten", - "account.unsubscribe": "Unsubscribe to notifications from @{name}", + "account.unsubscribe": "Benachrichtigungen von @{name} entabonnieren", "account_gallery.none": "Keine Medien vorhanden.", - "account_search.placeholder": "Search for an account", - "account_timeline.column_settings.show_pinned": "Show pinned posts", - "admin.awaiting_approval.approved_message": "{acct} was approved!", - "admin.awaiting_approval.empty_message": "There is nobody waiting for approval. When a new user signs up, you can review them here.", - "admin.awaiting_approval.rejected_message": "{acct} was rejected.", - "admin.dashboard.registration_mode.approval_hint": "Users can sign up, but their account only gets activated when an admin approves it.", - "admin.dashboard.registration_mode.approval_label": "Approval Required", + "account_search.placeholder": "Nach einem Account suchen", + "account_timeline.column_settings.show_pinned": "Angeheftete Beiträge anzeigen", + "admin.awaiting_approval.approved_message": "{acct} bestätigt.", + "admin.awaiting_approval.empty_message": "Keine neuen Nutzer zur Prüfung und Bestätigung vorhanden. Wenn sich ein neuer Nutzer anmeldet, kann er hier überprüft werden.", + "admin.awaiting_approval.rejected_message": "{acct} abgelehnt.", + "admin.dashboard.registration_mode.approval_hint": "Neue Nutzer können sich anmelden, müssen aber erst vom Adminstrator geprüft und aktiviert werden.", + "admin.dashboard.registration_mode.approval_label": "Bestätigung erforderlich", "admin.dashboard.registration_mode.closed_hint": "Neuanmeldungen sind zurzeit ausgesetzt. Einladungen sind weiterhin möglich.", "admin.dashboard.registration_mode.closed_label": "Geschlossen", - "admin.dashboard.registration_mode.open_hint": "Anyone can join.", + "admin.dashboard.registration_mode.open_hint": "Anmeldung offen für alle", "admin.dashboard.registration_mode.open_label": "Offen", "admin.dashboard.registration_mode_label": "Anmeldung", "admin.dashboard.settings_saved": "Einstellungen gespeichert!", "admin.dashcounters.domain_count_label": "peers", - "admin.dashcounters.mau_label": "monthly active users", + "admin.dashcounters.mau_label": "Monatlich aktive User", "admin.dashcounters.retention_label": "user retention", "admin.dashcounters.status_count_label": "Beiträge", "admin.dashcounters.user_count_label": "Nutzer", - "admin.dashwidgets.email_list_header": "Email list", + "admin.dashwidgets.email_list_header": "Emailliste", "admin.dashwidgets.software_header": "Software", - "admin.latest_accounts_panel.expand_message": "Click to see {count} more {count, plural, one {account} other {accounts}}", - "admin.latest_accounts_panel.title": "Latest Accounts", - "admin.moderation_log.empty_message": "You have not performed any moderation actions yet. When you do, a history will be shown here.", + "admin.latest_accounts_panel.expand_message": "{count} Weitere {count, plural, Einen {account} weiteren {accounts}} anzeigen", + "admin.latest_accounts_panel.title": "Neueste Accounts", + "admin.moderation_log.empty_message": "Bisher wurden keine Moderationstätigkeiten durchgeführt. Durchgeführte Modarationstätigkeiten werden hier angezeigt.", "admin.reports.actions.close": "Schliessen", "admin.reports.actions.view_status": "Beitrag ansehen", "admin.reports.empty_message": "Keine aktuellen Beschwerden. Wenn eine Beschwerde über einen Nutzer vorliegt, wird sie hier angezeigt.", @@ -82,20 +82,20 @@ "admin.statuses.actions.mark_status_not_sensitive": "Markierung als heikel aufheben", "admin.statuses.actions.mark_status_sensitive": "Als heikel markieren", "admin.statuses.status_deleted_message": "Beitrag von @{acct} gelöscht", - "admin.statuses.status_marked_message_not_sensitive": "Post by @{acct} was marked not sensitive", - "admin.statuses.status_marked_message_sensitive": "Post by @{acct} was marked sensitive", - "admin.user_index.empty": "No users found.", - "admin.user_index.search_input_placeholder": "Who are you looking for?", + "admin.statuses.status_marked_message_not_sensitive": "Beitrag von @{acct} wurde als nicht heikel markiert.", + "admin.statuses.status_marked_message_sensitive": "Beitrag von @{acct} wurde als heikel markiert.", + "admin.user_index.empty": "Keine Nutzer gefunden.", + "admin.user_index.search_input_placeholder": "Nutzer suchen", "admin.users.actions.deactivate_user": "@{name} deaktivieren", "admin.users.actions.delete_user": "@{name} löschen", - "admin.users.actions.demote_to_moderator": "Demote @{name} to a moderator", - "admin.users.actions.demote_to_moderator_message": "@{acct} was demoted to a moderator", - "admin.users.actions.demote_to_user": "Demote @{name} to a regular user", - "admin.users.actions.demote_to_user_message": "@{acct} was demoted to a regular user", - "admin.users.actions.promote_to_admin": "Promote @{name} to an admin", - "admin.users.actions.promote_to_admin_message": "@{acct} was promoted to an admin", - "admin.users.actions.promote_to_moderator": "Promote @{name} to a moderator", - "admin.users.actions.promote_to_moderator_message": "@{acct} was promoted to a moderator", + "admin.users.actions.demote_to_moderator": "@{name} zum Moderator herabstufen", + "admin.users.actions.demote_to_moderator_message": "@{acct} zum Moderator herabgestuft", + "admin.users.actions.demote_to_user": "@{name} zum einfachen Nutzer herabstufen", + "admin.users.actions.demote_to_user_message": "@{acct} zum einfachen Nutzer herabgestuft", + "admin.users.actions.promote_to_admin": "@{name} zum Adminstrator ernennen", + "admin.users.actions.promote_to_admin_message": "@{acct} ist nun Adminstrator.", + "admin.users.actions.promote_to_moderator": "@{name} zum Moderator ernennen", + "admin.users.actions.promote_to_moderator_message": "@{acct} ist nun Moderator", "admin.users.actions.unverify_user": "Verifizierung von @{name} aufheben", "admin.users.actions.verify_user": "Verifizierung von @{name} bestätigen", "admin.users.user_deactivated_message": "@{acct} wurde deaktiviert", @@ -105,24 +105,24 @@ "admin_nav.awaiting_approval": "Wartet auf Bestätigung", "admin_nav.dashboard": "Steuerung", "admin_nav.reports": "Beschwerden", - "alert.unexpected.clear_cookies": "clear cookies and browser data", - "alert.unexpected.help_text": "If the problem persists, please notify a site admin with a screenshot and information about your web browser. You may also {clear_cookies} (this will log you out).", + "alert.unexpected.clear_cookies": "Cookies und Browserdaten löschen", + "alert.unexpected.help_text": "Falls das Problem weiterhin besteht, benachrichtige einen Adminstrator mit einem Screenshot des Fehlers und dem verwendeten Browser. {clear_cookies} kann ebenfalls helfen. Dadurch wirst du automatisch abgemeldet.", "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.", - "alert.unexpected.return_home": "Return Home", - "alert.unexpected.title": "Hoppla!", - "aliases.account.add": "Create alias", - "aliases.account_label": "Old account:", - "aliases.aliases_list_delete": "Unlink alias", - "aliases.search": "Search your old account", - "aliases.success.add": "Account alias created successfully", - "aliases.success.remove": "Account alias removed successfully", - "auth.invalid_credentials": "Wrong username or password", - "auth.logged_out": "Logged out.", - "autosuggest_account_input.default_placeholder": "Search for an account", + "alert.unexpected.return_home": "Zurück zur Startseite", + "alert.unexpected.title": "", + "aliases.account.add": "Alias erstellen", + "aliases.account_label": "Alter Account:", + "aliases.aliases_list_delete": "Link zum Alias entfernen", + "aliases.search": "Nach altem Account suchen", + "aliases.success.add": "Alias erfolgreich erstellt.", + "aliases.success.remove": "Alias erfolgreich entfernt", + "auth.invalid_credentials": "Falsches Passwort oder faslscher Nutzername", + "auth.logged_out": "Abgemeldet.", + "autosuggest_account_input.default_placeholder": "Nach einem Account suchen", "backups.actions.create": "Backup erstellen", "backups.empty_message": "Kein Backup gefunden. {action}", "backups.empty_message.action": "Backup jetzt erstellen?", - "backups.pending": "Pending", + "backups.pending": "Anstehende Backups", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", "bundle_column_error.retry": "Erneut versuchen", @@ -132,7 +132,7 @@ "bundle_modal_error.retry": "Erneut versuchen", "chat_box.actions.send": "Senden", "chat_box.input.placeholder": "Nachricht senden…", - "chat_panels.main_window.empty": "No chats found. To start a chat, visit a user's profile.", + "chat_panels.main_window.empty": "Keine Chats vorhanden. Besuche ein Nutzerprofil, um einen Chat zu starten.", "chat_panels.main_window.title": "Chats", "chats.actions.delete": "Nachricht löschen", "chats.actions.more": "Mehr", @@ -140,95 +140,95 @@ "chats.audio_toggle_off": "Benachrichtigungston aus", "chats.audio_toggle_on": "Benachrichtigungston an", "chats.dividers.today": "Heute", - "chats.search_placeholder": "Start a chat with…", + "chats.search_placeholder": "Chatten mit…", "column.admin.awaiting_approval": "Wartet auf Bestätigung", "column.admin.dashboard": "Steuerung", "column.admin.moderation_log": "Moderationsprotokoll", "column.admin.reports": "Beschwerden", "column.admin.reports.menu.moderation_log": "Moderationsprotokoll", - "column.aliases": "Account aliases", - "column.aliases.create_error": "Error creating alias", - "column.aliases.delete": "Delete", - "column.aliases.delete_error": "Error deleting alias", - "column.aliases.subheading_add_new": "Add New Alias", - "column.aliases.subheading_aliases": "Current aliases", + "column.aliases": "Account-Aliases", + "column.aliases.create_error": "Fehler beim Erstellen des Aliases", + "column.aliases.delete": "Löschen", + "column.aliases.delete_error": "Fehler beim Löschen des Aliases", + "column.aliases.subheading_add_new": "Neuen Alias hinzufügen", + "column.aliases.subheading_aliases": "Bestehende Aliases", "column.backups": "Backups", "column.blocks": "Blockierte Profile", - "column.bookmarks": "Bookmarks", + "column.bookmarks": "Lesezeichen", "column.chats": "Chats", "column.community": "Lokale Zeitleiste", - "column.crypto_donate": "Donate Cryptocurrency", + "column.crypto_donate": "Mit Kryptowährungen spenden", "column.direct": "Direktnachrichten", "column.domain_blocks": "Versteckte Domains", "column.edit_profile": "Profil bearbeiten", - "column.export_data": "Export data", - "column.favourites": "Likes", - "column.federation_restrictions": "Federation Restrictions", + "column.export_data": "Daten exportieren", + "column.favourites": "Favorisierungen", + "column.federation_restrictions": "Beschränkungen der Föderierung", "column.filters": "Stummgeschaltete Wörter", - "column.filters.add_new": "Add New Filter", - "column.filters.conversations": "Conversations", - "column.filters.create_error": "Error adding filter", - "column.filters.delete": "Delete", - "column.filters.delete_error": "Error deleting filter", + "column.filters.add_new": "Filter hinzufügen", + "column.filters.conversations": "Unterhaltungen", + "column.filters.create_error": "Fehler beim Hinzufügen des Filters", + "column.filters.delete": "Löschen", + "column.filters.delete_error": "Fehler beim Löschen des Filters", "column.filters.drop_header": "Drop instead of hide", - "column.filters.drop_hint": "Filtered posts will disappear irreversibly, even if filter is later removed", - "column.filters.expires": "Expire after", - "column.filters.expires_hint": "Expiration dates are not currently supported", + "column.filters.drop_hint": "Gefilterte Beiträge bleiben dauerhaft unsichtbar, auch wenn der Filter später entfernt wird.", + "column.filters.expires": "Gültig bis", + "column.filters.expires_hint": "Ablaufdaten werden zurzeit nicht unterstüzt.", "column.filters.home_timeline": "Home timeline", - "column.filters.keyword": "Keyword or phrase", - "column.filters.notifications": "Notifications", - "column.filters.public_timeline": "Public timeline", - "column.filters.subheading_add_new": "Add New Filter", - "column.filters.subheading_filters": "Current Filters", - "column.filters.whole_word_header": "Whole word", + "column.filters.keyword": "Stichwort oder Wortfolge", + "column.filters.notifications": "Benachrichtgungen", + "column.filters.public_timeline": "Öffentliche Zeitleiste", + "column.filters.subheading_add_new": "Filter hinzufügen", + "column.filters.subheading_filters": "Bestehnde Filter", + "column.filters.whole_word_header": "Ganzes Wort", "column.filters.whole_word_hint": "When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word", "column.follow_requests": "Folgeanfragen", "column.groups": "Gruppen", "column.home": "Startseite", - "column.import_data": "Import data", - "column.info": "Server information", + "column.import_data": "Daten importieren", + "column.info": "Serverinformation", "column.lists": "Listen", "column.mfa": "Multi-Factor Authentication", - "column.mfa_cancel": "Cancel", - "column.mfa_confirm_button": "Confirm", - "column.mfa_disable_button": "Disable", - "column.mfa_setup": "Proceed to Setup", + "column.mfa_cancel": "Abbrechen", + "column.mfa_confirm_button": "Bestätigen", + "column.mfa_disable_button": "Ausschalten", + "column.mfa_setup": "Weiter zu den Einstellungen", "column.mutes": "Stummgeschaltete Profile", "column.notifications": "Benachrichtigungen", "column.preferences": "Einstellungen", "column.public": "Föderierte Zeitleiste", - "column.reblogs": "Reposts", + "column.reblogs": "Geteilte Beiträge", "column.remote": "Federated timeline", - "column.scheduled_statuses": "Scheduled Posts", - "column.search": "Search", - "column.security": "Security", + "column.scheduled_statuses": "Vorbereitete Beiträge", + "column.search": "Suche", + "column.security": "Sicherheitseinstellungen", "column.soapbox_config": "Soapbox Einstellungen", "column_back_button.label": "Zurück", "column_header.hide_settings": "Einstellungen verbergen", "column_header.show_settings": "Einstellungen anzeigen", "community.column_settings.media_only": "Nur Medien", - "community.column_settings.title": "Local timeline settings", - "compose.character_counter.title": "Used {chars} out of {maxChars} characters", - "compose.invalid_schedule": "You must schedule a post at least 5 minutes out.", - "compose.submit_success": "Your post was sent", + "community.column_settings.title": "Einstellungen für die lokale Zeitleiste", + "compose.character_counter.title": "{chars} von {maxChars} Zeichen verwendet", + "compose.invalid_schedule": "Der gewählte Zeitpunkt für vorbereitete Beiträge muss mindesten 5 Minuten in der Zukunft liegen.", + "compose.submit_success": "Beitrag gesendet", "compose_form.direct_message_warning": "Dieser Beitrag wird nur für die erwähnten Nutzer sichtbar sein.", "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags auffindbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "auf privat gestellt", - "compose_form.markdown.marked": "Post markdown enabled", - "compose_form.markdown.unmarked": "Post markdown disabled", - "compose_form.message": "Message", + "compose_form.markdown.marked": "Markdown für Beiträge eingeschaltet", + "compose_form.markdown.unmarked": "Markdown für Beiträge ausgeschaltet", + "compose_form.message": "Nachricht", "compose_form.placeholder": "Was gibt's Neues?", "compose_form.poll.add_option": "Eine Antwortmöglichkeit hinzufügen", "compose_form.poll.duration": "Umfragedauer", "compose_form.poll.option_placeholder": "Antwortmöglichkeit {number}", "compose_form.poll.remove_option": "Antwortmöglichkeit entfernen", - "compose_form.poll.type.hint": "Click to toggle poll type. Radio button (default) is single. Checkbox is multiple.", + "compose_form.poll.type.hint": "Umfrageart ändern. Für exakt eine mögliche Antwort rundes Optionsfeld auswählen (voreingestellt), für mehrere mögliche Antworten die Checkbox", "compose_form.publish": "Senden", "compose_form.publish_loud": "{publish}", - "compose_form.schedule": "Schedule", - "compose_form.scheduled_statuses.click_here": "Click here", - "compose_form.scheduled_statuses.message": "You have scheduled posts. {click_here} to see them.", + "compose_form.schedule": "Beitrag bestätigen", + "compose_form.scheduled_statuses.click_here": "Hier klicken", + "compose_form.scheduled_statuses.message": "Es sind vorbereitete Beiträge vorhanden. {click_here}, um sie anzuzeigen.", "compose_form.sensitive.hide": "Medien als heikel markieren", "compose_form.sensitive.marked": "Medien sind als heikel markiert", "compose_form.sensitive.unmarked": "Medien sind nicht als heikel markiert", @@ -238,13 +238,13 @@ "confirmation_modal.cancel": "Abbrechen", "confirmations.admin.deactivate_user.confirm": "@{name} deaktivieren", "confirmations.admin.deactivate_user.message": "Hiermit wird das Konto von @{acct} deaktiviert. Diese Entscheidung kann später zurückgenommen werden.", - "confirmations.admin.delete_local_user.checkbox": "I understand that I am about to delete a local user.", + "confirmations.admin.delete_local_user.checkbox": "Hiermit wird ein lokaler Nutzer unwiderruflich gelöscht.", "confirmations.admin.delete_status.confirm": "Beitrag löschen", "confirmations.admin.delete_status.message": "Hiermit wird ein Beitrag von @{acct} gelöscht. Der gelöschte Beitrag kann nicht wiederhergestellt werden..", "confirmations.admin.delete_user.confirm": "@{name} löschen", "confirmations.admin.delete_user.message": "Hiermit wird das Konto @{acct} unwiderruflich gelöscht. DAS KONTO KANN NICHT WIEDERHERGESTELLT WERDEN.", "confirmations.admin.mark_status_not_sensitive.confirm": "Markierung als heikel aufheben", - "confirmations.admin.mark_status_not_sensitive.message": "You are about to mark a post by @{acct} not sensitive.", + "confirmations.admin.mark_status_not_sensitive.message": "Hiermit wird der Beitrag von @{acct} als nicht heikel markiert.", "confirmations.admin.mark_status_sensitive.confirm": "Mark post sensitive", "confirmations.admin.mark_status_sensitive.message": "Hiermit wird der Beitrag von @{acct} als heikel markiert.", "confirmations.block.block_and_report": "Blockieren und melden", @@ -266,24 +266,24 @@ "confirmations.reply.message": "Wenn du jetzt antwortest, wird die gesamte Nachricht verworfen, die du gerade schreibst. Möchtest du wirklich fortfahren?", "confirmations.unfollow.confirm": "Entfolgen", "confirmations.unfollow.message": "Bist du dir sicher, dass du {name} entfolgen möchtest?", - "crypto_donate.explanation_box.message": "{siteTitle} accepts cryptocurrency donations. You may send a donation to any of the addresses below. Thank you for your support!", - "crypto_donate.explanation_box.title": "Sending cryptocurrency donations", - "crypto_donate_panel.actions.more": "Click to see {count} more {count, plural, one {wallet} other {wallets}}", - "crypto_donate_panel.heading": "Donate Cryptocurrency", - "crypto_donate_panel.intro.message": "{siteTitle} accepts cryptocurrency donations to fund our service. Thank you for your support!", - "datepicker.hint": "Scheduled to post at…", - "direct.search_placeholder": "Send a message to…", + "crypto_donate.explanation_box.message": "{siteTitle} akzeptiert Kryptowährungen. Du kannst an eine der angegebenen Adressen eine Spende senden. Danke für deine Unterstützung!", + "crypto_donate.explanation_box.title": "Spenden mit Kryptowährungen", + "crypto_donate_panel.actions.more": "{count} {count, plural, eine weitere {wallet} weitere {wallets}} anzeigen", + "crypto_donate_panel.heading": "Kryptowährungen spenden", + "crypto_donate_panel.intro.message": "{siteTitle} akzeptiert Kryptowährungen, um dieses Angebot zu finanzieren. Danke für deine Unterstützung!", + "datepicker.hint": "Beitrag veröffentlichen am…", + "direct.search_placeholder": "Nachricht senden an…", "donate": "Spenden", - "donate_crypto": "Donate cryptocurrency", - "edit_federation.followers_only": "Hide posts except to followers", - "edit_federation.force_nsfw": "Force attachments to be marked sensitive", - "edit_federation.media_removal": "Strip media", + "donate_crypto": "Kryptowährungen spenden", + "edit_federation.followers_only": "Beitrag nur für Follower anzeigen", + "edit_federation.force_nsfw": "Markierung aller Anhänge als heikel erzwingen", + "edit_federation.media_removal": "Alle Medien entfernen", "edit_federation.reject": "Reject all activities", - "edit_federation.save": "Save", + "edit_federation.save": "Speichern", "edit_federation.success": "{host} federation was updated", - "edit_federation.unlisted": "Force posts unlisted", - "edit_profile.error": "Profile update failed", - "edit_profile.fields.accepts_email_list_label": "Subscribe to newsletter", + "edit_federation.unlisted": "Ungelistete Beiträge erzwingen", + "edit_profile.error": "Profil konnte nicht geändert werden", + "edit_profile.fields.accepts_email_list_label": "Newsletter abonnieren", "edit_profile.fields.avatar_label": "Profilbild", "edit_profile.fields.bio_label": "Kurzbeschreibung", "edit_profile.fields.bio_placeholder": "Tell us about yourself.", @@ -296,19 +296,19 @@ "edit_profile.fields.meta_fields.content_placeholder": "Content", "edit_profile.fields.meta_fields.label_placeholder": "Label", "edit_profile.fields.meta_fields_label": "Profile metadata", - "edit_profile.fields.stranger_notifications_label": "Block notifications from strangers", + "edit_profile.fields.stranger_notifications_label": "Benachrichtigungen von Fremden blockieren", "edit_profile.fields.verified_display_name": "Nach der Verifizierung kann der Nutzername nicht mehr geändert werden.", "edit_profile.hints.accepts_email_list": "Opt-in to news and marketing updates.", "edit_profile.hints.avatar": "Erlaubte Formate sind PNG, GIF oder JPG. Die Datei darf nicht größer als 2 MB sein. Das Bild wird automatisch auf 400x400px verkleinert.", "edit_profile.hints.bot": "This account mainly performs automated actions and might not be monitored", "edit_profile.hints.header": "Erlaubte Formate sind PNG, GIF oder JPG. Die Datei darf nicht größer als 2 MB sein. Das Bild wird automatisch auf 1500x500px verkleinert.", - "edit_profile.hints.hide_network": "Who you follow and who follows you will not be shown on your profile", + "edit_profile.hints.hide_network": "Dein Follower und wem du folgst wird nicht in deinem Profil angezeit.", "edit_profile.hints.locked": "Follower müssen einzeln bestätigt werden.", "edit_profile.hints.meta_fields": "You can have up to {count, plural, one {# item} other {# items}} displayed as a table on your profile", - "edit_profile.hints.stranger_notifications": "Only show notifications from people you follow", + "edit_profile.hints.stranger_notifications": "Nur Benachrichtigungen von Nutzern anzeigen, denen du folgst.", "edit_profile.meta_fields.add": "Add new item", "edit_profile.save": "Speichern", - "edit_profile.success": "Profile saved!", + "edit_profile.success": "Profil gespeichert", "embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.", "embed.preview": "Vorschau:", "emoji_button.activity": "Aktivitäten", @@ -325,23 +325,23 @@ "emoji_button.search_results": "Suchergebnisse", "emoji_button.symbols": "Symbole", "emoji_button.travel": "Reisen und Orte", - "empty_column.account_blocked": "You are blocked by @{accountUsername}.", - "empty_column.account_favourited_statuses": "This user doesn't have any liked posts yet.", + "empty_column.account_blocked": "@{accountUsername} hat dich geblockt.", + "empty_column.account_favourited_statuses": "Dieser Nutzer hat noch keine Beiträge favorisiert.", "empty_column.account_timeline": "Keine Beiträge!", "empty_column.account_unavailable": "Konto nicht verfügbar", - "empty_column.aliases": "You haven't created any account alias yet.", + "empty_column.aliases": "Bisher wurde noch kein Alias angelegt", "empty_column.aliases.suggestions": "There are no account suggestions available for the provided term.", "empty_column.blocks": "Du hast keine Profile blockiert.", - "empty_column.bookmarks": "You don't have any bookmarks yet. When you add one, it will show up here.", + "empty_column.bookmarks": "Es wurden noch keine Lesezeichen angelegt. Erstellte Lesezeichen erscheinen hier.", "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!", "empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Wenn du eine sendest oder empfängst, wird sie hier zu sehen sein.", "empty_column.domain_blocks": "Bisher wurden noch keine Domains blockiert.", - "empty_column.favourited_statuses": "Du hast noch keine favorisierten Beiträge. Wenn du einen favorisierst, wird er hier erscheinen.", + "empty_column.favourited_statuses": "Du hast noch keine Beiträge favorisiert. Favorisierte Beiträge erscheinen hier.", "empty_column.favourites": "Diesen Beitrag hat noch niemand favorisiert. Sobald es jemand tut, wird das hier angezeigt.", "empty_column.filters": "Du hast keine Wörter stummgeschaltet.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "Du hast noch keine Folge-Anfragen. Sobald du eine erhältst, wird sie hier angezeigt.", - "empty_column.group": "Diese Gruppe hat noch keine Beiträge. Sobald ein Gruppenmitglied einen Beitrag erstellt, wird er hier angezeigt werden.", + "empty_column.follow_requests": "Du hast noch keine Folgeanfragen. Sobald du eine erhältst, wird sie hier angezeigt.", + "empty_column.group": "Diese Gruppe hat noch keine Beiträge. Sobald ein Gruppenmitglied einen Beitrag erstellt, wird er hier angezeigt.", "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", "empty_column.home": "Deine Startseite ist leer! Besuche {public} oder nutze die Suche, um andere Nutzer zu finden.", "empty_column.home.local_tab": "den Reiter {site_title}", @@ -351,27 +351,27 @@ "empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.", "empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Zeitleiste aufzufüllen", "empty_column.remote": "There is nothing here! Manually follow users from {instance} to fill it up.", - "empty_column.scheduled_statuses": "You don't have any scheduled statuses yet. When you add one, it will show up here.", + "empty_column.scheduled_statuses": "Bisher wurden keine vorbereiteten Beiträge erstellt. Vorbereitete Beiträge werden hier angezeigt.", "empty_column.search.accounts": "There are no people results for \"{term}\"", "empty_column.search.hashtags": "There are no hashtags results for \"{term}\"", "empty_column.search.statuses": "There are no posts results for \"{term}\"", - "export_data.actions.export": "Export", - "export_data.actions.export_blocks": "Export blocks", - "export_data.actions.export_follows": "Export follows", - "export_data.actions.export_mutes": "Export mutes", - "export_data.blocks_label": "Blocks", - "export_data.follows_label": "Follows", - "export_data.hints.blocks": "Get a CSV file containing a list of blocked accounts", - "export_data.hints.follows": "Get a CSV file containing a list of followed accounts", - "export_data.hints.mutes": "Get a CSV file containing a list of muted accounts", - "export_data.mutes_label": "Mutes", - "export_data.success.blocks": "Blocks exported successfully", - "export_data.success.followers": "Followers exported successfully", - "export_data.success.mutes": "Mutes exported successfully", + "export_data.actions.export": "Exportieren", + "export_data.actions.export_blocks": "Liste geblockter Nutzer expotieren", + "export_data.actions.export_follows": "Liste der Nutzer, denen du folgst, exportieren", + "export_data.actions.export_mutes": "Liste stummgeschlateter Nutzer expotieren", + "export_data.blocks_label": "Geblockte Nutzer", + "export_data.follows_label": "Nutzer, denen du folgst", + "export_data.hints.blocks": "CSV-Datei mit geblockten Nutzern erstellen", + "export_data.hints.follows": "CSV-Datei mit Nutzern, denen du folgst, erstellen", + "export_data.hints.mutes": "CSV-Datei mit stummgeschalteten Nutzern erstellen", + "export_data.mutes_label": "Stummgeschaltete Nutzer", + "export_data.success.blocks": "Blockliste erfolgreich exportiert", + "export_data.success.followers": "Liste der Nutzer, denen du folgst, erfolgreich exportiert", + "export_data.success.mutes": "Liste stummgeschalteter Nutzer erfolgreich exportiert", "federation_restriction.federated_timeline_removal": "Fediverse timeline removal", - "federation_restriction.followers_only": "Hidden except to followers", + "federation_restriction.followers_only": "Nur für Follower sichtbar", "federation_restriction.full_media_removal": "Full media removal", - "federation_restriction.media_nsfw": "Attachments marked NSFW", + "federation_restriction.media_nsfw": "Anhänge als NSFW markiert", "federation_restriction.partial_media_removal": "Partial media removal", "federation_restrictions.empty_message": "{siteTitle} has not restricted any instances.", "federation_restrictions.explanation_box.message": "Normally servers on the Fediverse can communicate freely. {siteTitle} has imposed restrictions on the following servers.", @@ -380,23 +380,23 @@ "fediverse_tab.explanation_box.dismiss": "Don't show again", "fediverse_tab.explanation_box.explanation": "{site_title} ist Teil des Fediverse, einem Sozialen Netzwerk, das aus tausenden unabhängigen Instanzen (aka \"Servern\") besteht. Die Beiträge, die du hier siehst, stammen überwiegend von anderen Servern. Du kannst auf alle Einträge reagieren oder jeden Server blockieren, der dir nicht gefällt. Die Bezeichnung hinter dem zweiten @-Symbol ist der Name des entsprechenden Servers. Um nur Beiträge von {site_title} zu sehen, wähle {local} aus.", "fediverse_tab.explanation_box.title": "Was ist das Fediverse?", - "filters.added": "Filter added.", + "filters.added": "Filter hinzugefügt.", "filters.context_header": "Filter contexts", "filters.context_hint": "One or multiple contexts where the filter should apply", "filters.filters_list_context_label": "Filter contexts:", - "filters.filters_list_delete": "Delete", + "filters.filters_list_delete": "Löschen", "filters.filters_list_details_label": "Filter settings:", "filters.filters_list_drop": "Drop", "filters.filters_list_hide": "Hide", - "filters.filters_list_phrase_label": "Keyword or phrase:", + "filters.filters_list_phrase_label": "Stichwort oder Wortfolge:", "filters.filters_list_whole-word": "Whole word", - "filters.removed": "Filter deleted.", + "filters.removed": "Filter gelöscht.", "follow_recommendations.done": "Done", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", + "follow_recommendations.heading": "Folge Nutzern, deren Beiträge du sehen möchtest. Hier sind einige Vorschläge:", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", "follow_request.authorize": "Bestätigen", "follow_request.reject": "Ablehnen", - "forms.copy": "Copy", + "forms.copy": "Kopieren", "getting_started.open_source_notice": "{code_name} ist quelloffene Software. Du kannst auf GitLab unter {code_link} (v{code_version}) mitarbeiten oder Probleme melden.", "group.detail.archived_group": "Archived group", "group.members.empty": "Diese Gruppe hat noch keine Mitglieder.", @@ -407,65 +407,65 @@ "groups.card.roles.member": "Mitglied dieser Gruppe", "groups.card.view": "Ansehen", "groups.create": "Gruppe erstellen", - "groups.detail.role_admin": "You're an admin", - "groups.edit": "Edit", + "groups.detail.role_admin": "Du bist ein Administrator", + "groups.edit": "Bearbeiten", "groups.form.coverImage": "Neues Titelbild hochladen (optional)", "groups.form.coverImageChange": "Banner image selected", "groups.form.create": "Gruppe erstellen", "groups.form.description": "Gruppenbeschreibung", - "groups.form.title": "Title", + "groups.form.title": "Gruppentitel", "groups.form.update": "Update group", - "groups.join": "Join group", - "groups.leave": "Leave group", - "groups.removed_accounts": "Removed Accounts", + "groups.join": "Gruppe beitreten", + "groups.leave": "Gruppe verlassen", + "groups.removed_accounts": "Entfernte Accounts", "groups.sidebar-panel.item.no_recent_activity": "No recent activity", - "groups.sidebar-panel.item.view": "new posts", - "groups.sidebar-panel.show_all": "Show all", - "groups.sidebar-panel.title": "Groups You're In", + "groups.sidebar-panel.item.view": "Neue Beiträge", + "groups.sidebar-panel.show_all": "Alle anzeigen", + "groups.sidebar-panel.title": "Gruppenmitgliedschaften", "groups.tab_admin": "Manage", "groups.tab_featured": "Featured", "groups.tab_member": "Mitglied", "hashtag.column_header.tag_mode.all": "und {additional}", "hashtag.column_header.tag_mode.any": "oder {additional}", "hashtag.column_header.tag_mode.none": "ohne {additional}", - "header.about.label": "About", - "header.back_to.label": "Back to {siteTitle}", + "header.about.label": "Über", + "header.back_to.label": "Zurück zu {siteTitle}", "header.home.label": "Home", - "header.login.label": "Log in", - "home.column_settings.show_direct": "Show direct messages", + "header.login.label": "Anmelden", + "home.column_settings.show_direct": "Direktnachricht anzeigen", "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen", "home.column_settings.show_replies": "Antworten anzeigen", "home.column_settings.title": "Home settings", "home_column.lists": "Listen", - "home_column_header.all": "All", + "home_column_header.all": "Alle", "home_column_header.fediverse": "Fediverse", "home_column_header.home": "Startseite", "icon_button.icons": "Icons", - "icon_button.label": "Select icon", - "icon_button.not_found": "No icons!! (╯°□°)╯︵ ┻━┻", - "import_data.actions.import": "Import", - "import_data.actions.import_blocks": "Import blocks", - "import_data.actions.import_follows": "Import follows", - "import_data.actions.import_mutes": "Import mutes", - "import_data.blocks_label": "Blocks", - "import_data.follows_label": "Follows", - "import_data.hints.blocks": "CSV file containing a list of blocked accounts", - "import_data.hints.follows": "CSV file containing a list of followed accounts", - "import_data.hints.mutes": "CSV file containing a list of muted accounts", - "import_data.mutes_label": "Mutes", - "import_data.success.blocks": "Blocks imported successfully", + "icon_button.label": "Icons auswählen", + "icon_button.not_found": "Keine Icons!! (╯°□°)╯︵ ┻━┻", + "import_data.actions.import": "Importieren", + "import_data.actions.import_blocks": "Blockliste importieren", + "import_data.actions.import_follows": "Nutzer, denen du folgst, importieren", + "import_data.actions.import_mutes": "Liste mit stummgeschalteten Nutzern importieren", + "import_data.blocks_label": "Geblockt", + "import_data.follows_label": "Nutzer, denen du folgst", + "import_data.hints.blocks": "CSV-Datei mit geblockten Nutzern", + "import_data.hints.follows": "CSV-Datei mit Nutzer, denen du folgst", + "import_data.hints.mutes": "CSV-Datei mit stummgeschalteten Nutzern", + "import_data.mutes_label": "Stummgeschaltet", + "import_data.success.blocks": "Blockliste erfolgreich importiert", "import_data.success.followers": "Followers imported successfully", - "import_data.success.mutes": "Mutes imported successfully", + "import_data.success.mutes": "Liste mit stummgeschalteten Nutzern erfolgreich importiert", "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}", "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}", "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}", - "introduction.federation.action": "Next", + "introduction.federation.action": "Weiter", "introduction.federation.home.headline": "Home", "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", "introduction.interactions.action": "Finish tutorial!", "introduction.interactions.favourite.headline": "Favorite", "introduction.interactions.favourite.text": "You can save a post for later, and let the author know that you liked it, by favoriting it.", - "introduction.interactions.reblog.headline": "Repost", + "introduction.interactions.reblog.headline": "Teilen", "introduction.interactions.reblog.text": "You can share other people's posts with your followers by reposting them.", "introduction.interactions.reply.headline": "Reply", "introduction.interactions.reply.text": "You can reply to other people's and your own posts, which will chain them together in a conversation.", @@ -493,7 +493,7 @@ "keyboard_shortcuts.profile": "Profil des Autors öffnen", "keyboard_shortcuts.react": "to react", "keyboard_shortcuts.reply": "antworten", - "keyboard_shortcuts.requests": "Liste der Folge-Anfragen öffnen", + "keyboard_shortcuts.requests": "Liste der Folgeanfragen öffnen", "keyboard_shortcuts.search": "Suche fokussieren", "keyboard_shortcuts.toggle_hidden": "Text hinter einer Inhaltswarnung verstecken/anzeigen", "keyboard_shortcuts.toggle_sensitivity": "Medien hinter einer Inhaltswarnung verstecken/anzeigen", @@ -543,56 +543,56 @@ "mfa.setup_otp_title": "OTP Disabled", "mfa.setup_recoverycodes": "Recovery codes", "mfa.setup_warning": "Write these codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.", - "missing_description_modal.cancel": "Cancel", - "missing_description_modal.continue": "Post", + "missing_description_modal.cancel": "Abbrechen", + "missing_description_modal.continue": "Senden", "missing_description_modal.text": "You have not entered a description for all attachments. Continue anyway?", "missing_indicator.label": "Nicht gefunden", - "missing_indicator.sublabel": "Die Ressource konnte nicht gefunden werden", + "missing_indicator.sublabel": "Der Eintrag konnte nicht gefunden werden", "morefollows.followers_label": "…and {count} more {count, plural, one {follower} other {followers}} on remote sites.", "morefollows.following_label": "…and {count} more {count, plural, one {follow} other {follows}} on remote sites.", "mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?", "navigation.chats": "Chats", - "navigation.dashboard": "Dashboard", - "navigation.direct_messages": "Messages", - "navigation.home": "Home", + "navigation.dashboard": "Steuerung", + "navigation.direct_messages": "Nachrichten", + "navigation.home": "Start", "navigation.invites": "Invites", - "navigation.notifications": "Notifications", - "navigation.search": "Search", + "navigation.notifications": "Benachrichtigungen", + "navigation.search": "Suche", "navigation_bar.account_aliases": "Account aliases", "navigation_bar.admin_settings": "Admin settings", "navigation_bar.blocks": "Blockierte Profile", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "Lesezeichen", "navigation_bar.compose": "Neuen Beitrag verfassen", - "navigation_bar.compose_direct": "Direct message", + "navigation_bar.compose_direct": "Direktnachrichten", "navigation_bar.domain_blocks": "Versteckte Domains", - "navigation_bar.export_data": "Export data", + "navigation_bar.export_data": "Daten exportieren", "navigation_bar.favourites": "Favoriten", "navigation_bar.filters": "Stummgeschaltene Wörter", "navigation_bar.follow_requests": "Folgeanfragen", - "navigation_bar.import_data": "Import data", + "navigation_bar.import_data": "Daten importieren", "navigation_bar.info": "Über diesen Server", "navigation_bar.keyboard_shortcuts": "Tastenkombinationen", - "navigation_bar.lists": "Lists", + "navigation_bar.lists": "Listen", "navigation_bar.logout": "Abmelden", - "navigation_bar.messages": "Messages", + "navigation_bar.messages": "Nachrichten", "navigation_bar.mutes": "Stummgeschaltete Profile", "navigation_bar.pins": "Angeheftete Beiträge", "navigation_bar.preferences": "Einstellungen", "navigation_bar.security": "Sicherheit", "navigation_bar.soapbox_config": "Soapbox config", - "notification.chat_mention": "{name} sent you a message", + "notification.chat_mention": "{name} hat dir eine Nachricht gesendet", "notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.follow": "{name} folgt dir", "notification.follow_request": "{name} möchte dir folgen", "notification.mention": "{name} hat dich erwähnt", - "notification.move": "{name} moved to {targetName}", + "notification.move": "{name} ist nach {targetName} umgezogen", "notification.pleroma:emoji_reaction": "{name} hat auf deinen Beitrag reagiert", "notification.poll": "Eine Umfrage, in der du abgestimmt hast, ist vorbei", "notification.reblog": "{name} hat deinen Beitrag geteilt", "notifications.clear": "Benachrichtigungen löschen", "notifications.clear_confirmation": "Bist du dir sicher, dass du alle Benachrichtigungen löschen möchtest?", "notifications.column_settings.alert": "Desktop-Benachrichtigungen", - "notifications.column_settings.emoji_react": "Emoji reacts:", + "notifications.column_settings.emoji_react": "Emoji-Reaktionen:", "notifications.column_settings.favourite": "Favorisierungen:", "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an", "notifications.column_settings.filter_bar.category": "Schnellfilterleiste", @@ -620,8 +620,8 @@ "notifications.group": "{count} Benachrichtigungen", "notifications.queue_label": "{count, plural, one {Eine neue Benachrichtigung} other {# neue Benachrichtigungen}}. Hier klicken, um sie anzuzeigen.", "password_reset.confirmation": "Check your email for confirmation.", - "password_reset.fields.username_placeholder": "Email or username", - "password_reset.reset": "Reset password", + "password_reset.fields.username_placeholder": "Email oder Nutzername", + "password_reset.reset": "Passwort zurücksetzen", "pinned_statuses.none": "Keine angehefteten Beiträge.", "poll.closed": "Geschlossen", "poll.refresh": "Aktualisieren", @@ -791,21 +791,21 @@ "soapbox_config.promo_panel.meta_fields.url_placeholder": "URL", "soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.", "soapbox_config.raw_json_label": "Advanced: Edit raw JSON data", - "soapbox_config.save": "Save", + "soapbox_config.save": "Speichern", "soapbox_config.saved": "Soapbox config saved!", "soapbox_config.verified_can_edit_name_label": "Allow verified users to edit their own display name.", "status.admin_account": "Öffne Moderationsoberfläche für @{name}", "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", - "status.block": "Blockiere @{name}", + "status.block": "@{name} blockieren", "status.bookmark": "Bookmark", "status.bookmarked": "Bookmark added.", - "status.cancel_reblog_private": "Nicht mehr teilen", + "status.cancel_reblog_private": "Teilen zurücknehmen", "status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden", - "status.chat": "Chat with @{name}", + "status.chat": "Chatte mit @{name}", "status.copy": "Kopiere Link zum Beitrag", "status.delete": "Löschen", - "status.detailed_status": "Detaillierte Ansicht der Konversation", - "status.direct": "Direktnachricht @{name}", + "status.detailed_status": "Detaillierte Ansicht der Unterhaltung", + "status.direct": "Direktnachricht an @{name}", "status.embed": "Einbetten", "status.favourite": "Favorisieren", "status.filtered": "Gefiltert", @@ -814,7 +814,7 @@ "status.mention": "@{name} erwähnen", "status.more": "Mehr", "status.mute": "@{name} stummschalten", - "status.mute_conversation": "Konversation stummschalten", + "status.mute_conversation": "Unterhaltung stummschalten", "status.open": "Diesen Beitrag öffnen", "status.pin": "Im Profil anheften", "status.pinned": "Angehefteter Beitrag", @@ -825,7 +825,7 @@ "status.reactions.like": "Like", "status.reactions.open_mouth": "Wow", "status.reactions.weary": "Weary", - "status.reactions_expand": "Select emoji", + "status.reactions_expand": "Emoji auswählen", "status.read_more": "Mehr lesen", "status.reblog": "Teilen", "status.reblog_private": "Mit der ursprünglichen Zielgruppe teilen", @@ -843,22 +843,22 @@ "status.show_less_all": "Alle Inhaltswarnungen zuklappen", "status.show_more": "Mehr anzeigen", "status.show_more_all": "Alle Inhaltswarnungen aufklappen", - "status.show_thread": "Zeige Konversation", - "status.title": "Post", - "status.title_direct": "Direct message", - "status.unbookmark": "Remove bookmark", - "status.unbookmarked": "Bookmark removed.", - "status.unmute_conversation": "Stummschaltung von Konversation aufheben", + "status.show_thread": "Gesamte Unterhaltung anzeigen", + "status.title": "Beiträge", + "status.title_direct": "Direktnachricht", + "status.unbookmark": "Lesezeichen entfernen", + "status.unbookmarked": "Lesezeichen entfernt.", + "status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben", "status.unpin": "Vom Profil lösen", "status_list.queue_label": "{count, plural, one {Ein neuer Beitrag} other {# neue Beiträge}}. Hier klicken, um {count, plural, one {ihn} other {sie}} anzuzeigen.", - "statuses.tombstone": "One or more posts is unavailable.", + "statuses.tombstone": "Beitrag oder Beiträge nicht mehr vorhanden.", "suggestions.dismiss": "Empfehlung ausblenden", "tabs_bar.all": "All", "tabs_bar.apps": "Apps", "tabs_bar.chats": "Chats", - "tabs_bar.dashboard": "Dashboard", + "tabs_bar.dashboard": "Steuerung", "tabs_bar.fediverse": "Fediverse", - "tabs_bar.header": "Account Info", + "tabs_bar.header": "Kontoinformtion", "tabs_bar.home": "Startseite", "tabs_bar.news": "News", "tabs_bar.notifications": "Benachrichtigungen", @@ -882,7 +882,7 @@ "upload_error.limit": "Dateiupload-Limit erreicht.", "upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.", "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben", - "upload_form.preview": "Preview", + "upload_form.preview": "Vorschau", "upload_form.undo": "Löschen", "upload_progress.label": "Wird hochgeladen …", "video.close": "Video schließen", @@ -895,5 +895,6 @@ "video.pause": "Pausieren", "video.play": "Abspielen", "video.unmute": "Ton einschalten", - "who_to_follow.title": "Who To Follow" + "who_to_follow.title": "Vorschläge" } + diff --git a/app/soapbox/locales/defaultMessages.json b/app/soapbox/locales/defaultMessages.json index eeeb1e1385..19ebf3b15a 100644 --- a/app/soapbox/locales/defaultMessages.json +++ b/app/soapbox/locales/defaultMessages.json @@ -1101,7 +1101,7 @@ "id": "confirmations.block.message" }, { - "defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "id": "confirmations.domain_block.message" } ], diff --git a/app/soapbox/locales/en.json b/app/soapbox/locales/en.json index acf1a24fdc..d8f18be45c 100644 --- a/app/soapbox/locales/en.json +++ b/app/soapbox/locales/en.json @@ -255,7 +255,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", diff --git a/app/soapbox/locales/ga.json b/app/soapbox/locales/ga.json index ff9c45ab7f..ed0ef2efaa 100644 --- a/app/soapbox/locales/ga.json +++ b/app/soapbox/locales/ga.json @@ -255,7 +255,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", diff --git a/app/soapbox/locales/hi.json b/app/soapbox/locales/hi.json index 36622d3a58..ca5d0c94bf 100644 --- a/app/soapbox/locales/hi.json +++ b/app/soapbox/locales/hi.json @@ -255,7 +255,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", diff --git a/app/soapbox/locales/lt.json b/app/soapbox/locales/lt.json index a8cd841d26..739394f6f6 100644 --- a/app/soapbox/locales/lt.json +++ b/app/soapbox/locales/lt.json @@ -255,7 +255,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", diff --git a/app/soapbox/locales/mk.json b/app/soapbox/locales/mk.json index 3f5c1fb571..70c8edc395 100644 --- a/app/soapbox/locales/mk.json +++ b/app/soapbox/locales/mk.json @@ -255,7 +255,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", diff --git a/app/soapbox/locales/ms.json b/app/soapbox/locales/ms.json index 58e751e169..9a1b55f170 100644 --- a/app/soapbox/locales/ms.json +++ b/app/soapbox/locales/ms.json @@ -255,7 +255,7 @@ "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", "confirmations.mute.confirm": "Mute", "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", diff --git a/app/soapbox/locales/pl.json b/app/soapbox/locales/pl.json index 3a23257696..e8f975a806 100644 --- a/app/soapbox/locales/pl.json +++ b/app/soapbox/locales/pl.json @@ -97,10 +97,14 @@ "admin.users.actions.promote_to_admin_message": "Mianowano @{acct} administratorem", "admin.users.actions.promote_to_moderator": "Mianuj @{name} moderatorem", "admin.users.actions.promote_to_moderator_message": "Mianowano @{acct} moderatorem", + "admin.users.actions.suggest_user": "Polecaj @{name}", + "admin.users.actions.unsuggest_user": "Przestań polecać @{name}", "admin.users.actions.unverify_user": "Cofnij weryfikację @{name}", "admin.users.actions.verify_user": "Weryfikuj @{name}", "admin.users.user_deactivated_message": "Zdezaktywowano @{acct}", "admin.users.user_deleted_message": "Usunięto @{acct}", + "admin.users.user_suggested_message": "Zaczęto polecać @{acct}", + "admin.users.user_unsuggested_message": "Przestano polecać @{acct}", "admin.users.user_unverified_message": "Cofnięto weryfikację @{acct}", "admin.users.user_verified_message": "Zweryfikowano @{acct}", "admin_nav.awaiting_approval": "Oczekujące zgłoszenia", @@ -117,6 +121,18 @@ "aliases.search": "Szukaj swojego starego konta", "aliases.success.add": "Pomyślnie utworzono alias konta", "aliases.success.remove": "Pomyślnie usunięto alias konta", + "app_create.name_label": "Nazwa aplikacji", + "app_create.name_placeholder": "np. „Soapbox”", + "app_create.redirect_uri_label": "Adresy przekeirowania", + "app_create.results.app_label": "Aplikacja", + "app_create.results.explanation_text": "Utworzyłeś(-aś) nową aplikację i token! Skopiuj gdzieś te dane, nie zobaczysz ich po opuszczeniu tej strony.", + "app_create.results.explanation_title": "Pomyślnie utworzono aplikację", + "app_create.restart": "Utwórz kolejną", + "app_create.results.token_label": "Token OAuth", + "app_create.scopes_label": "Zakresy", + "app_create.scopes_placeholder": "np. „read write follow”", + "app_create.submit": "Utwórz aplikację", + "app_create.website_label": "Strona", "auth.invalid_credentials": "Nieprawidłowa nazwa użytkownika lub hasło", "auth.logged_out": "Wylogowano.", "autosuggest_account_input.default_placeholder": "Szukaj konta", @@ -138,6 +154,8 @@ "chats.actions.delete": "Usuń wiadomość", "chats.actions.more": "Więcej", "chats.actions.report": "Zgłoś użytkownika", + "chats.attachment": "Załącznik", + "chats.attachment_image": "Zdjęcie", "chats.audio_toggle_off": "Wyłączono dźwięk powiadomień", "chats.audio_toggle_on": "Włączono dźwięk powiadomień", "chats.dividers.today": "Dzisiaj", @@ -153,12 +171,14 @@ "column.aliases.delete_error": "Błąd usuwania aliasu", "column.aliases.subheading_add_new": "Dodaj nowy alias", "column.aliases.subheading_aliases": "Istniejące aliasy", + "column.app_create": "Utwórz aplikację", "column.backups": "Kopie zapasowe", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Załadki", "column.chats": "Rozmowy", "column.community": "Lokalna oś czasu", "column.crypto_donate": "Przekaż kryptowalutę", + "column.developers": "Programiści", "column.direct": "Wiadomości bezpośrednie", "column.domain_blocks": "Ukryte domeny", "column.edit_profile": "Edytuj profil", @@ -189,6 +209,7 @@ "column.import_data": "Importuj dane", "column.info": "Informacje o serwerze", "column.lists": "Listy", + "column.mentions": "W odpowiedzi do", "column.mfa": "Uwierzytelnianie wieloetapowe", "column.mfa_cancel": "Anuluj", "column.mfa_confirm_button": "Potwierdź", @@ -250,6 +271,8 @@ "confirmations.admin.mark_status_not_sensitive.message": "Zamierzasz oznaczyć wpis {acct} jako niewrażliwy.", "confirmations.admin.mark_status_sensitive.confirm": "Oznacz wpis jako wrażliwy", "confirmations.admin.mark_status_sensitive.message": "Zamierzasz oznaczyć wpis {acct} jako wrażliwy.", + "confirmations.admin.reject_user.confirm": "Odrzuć @{name}", + "confirmations.admin.reject_user.message": "Zamierzasz odrzucić prośbę o rejestrację @{acct}. To działanie nie może zostać cofnięte.", "confirmations.block.block_and_report": "Zablokuj i zgłoś", "confirmations.block.confirm": "Zablokuj", "confirmations.block.message": "Czy na pewno chcesz zablokować {name}?", @@ -275,6 +298,8 @@ "crypto_donate_panel.heading": "Przekaż kryptowalutę", "crypto_donate_panel.intro.message": "{siteTitle} przyjmuje darowizny w kryptowalutach, aby utrzymać naszą usługę. Dziękujemy za Wasze wsparcie!", "datepicker.hint": "Zaplanowano publikację na…", + "developers.navigation.app_create_label": "Utwórz aplikację", + "developers.navigation.intentional_error_label": "Wywołaj błąd", "direct.search_placeholder": "Wyślij wiadomość do…", "donate": "Przekaż darowiznę", "donate_crypto": "Przekaż kryptowalutę", @@ -400,6 +425,8 @@ "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", "forms.copy": "Kopiuj", + "forms.hide_password": "Ukryj hasło", + "forms.show_password": "Pokaż hasło", "getting_started.open_source_notice": "{code_name} jest oprogramowaniem o otwartym źródle. Możesz pomóc w rozwoju lub zgłaszać błędy na GitLabie tutaj: {code_link} (v{code_version}).", "group.detail.archived_group": "Zarchiwizowana grupa", "group.members.empty": "Ta grupa nie ma żadnych członków.", @@ -556,6 +583,7 @@ "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "navigation.chats": "Czaty", "navigation.dashboard": "Administracja", + "navigation.developers": "Programiści", "navigation.direct_messages": "Wiadomości", "navigation.home": "Główna", "navigation.invites": "Zaproszenia", @@ -567,6 +595,7 @@ "navigation_bar.bookmarks": "Zakładki", "navigation_bar.compose": "Utwórz nowy wpis", "navigation_bar.compose_direct": "Wiadomość bezpośrednia", + "navigation_bar.compose_reply": "Odpowiedz na wpis", "navigation_bar.domain_blocks": "Ukryte domeny", "navigation_bar.export_data": "Eksportuj dane", "navigation_bar.favourites": "Ulubione", @@ -574,6 +603,7 @@ "navigation_bar.follow_requests": "Prośby o śledzenie", "navigation_bar.import_data": "Importuj dane", "navigation_bar.info": "Szczegółowe informacje", + "navigation_bar.invites": "Zaproszenia", "navigation_bar.keyboard_shortcuts": "Skróty klawiszowe", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Wyloguj", @@ -581,6 +611,7 @@ "navigation_bar.mutes": "Wyciszeni użytkownicy", "navigation_bar.pins": "Przypięte wpisy", "navigation_bar.preferences": "Preferencje", + "navigation_bar.in_reply_to": "W odpowiedzi do", "navigation_bar.security": "Bezpieczeństwo", "navigation_bar.soapbox_config": "Konfiguracja Soapbox", "notification.chat_mention": "{name} wysłał(a) Ci wiadomośść", @@ -640,6 +671,7 @@ "preferences.fields.boost_modal_label": "Pokazuj prośbę o potwierdzenie przed podbiciem", "preferences.fields.content_type_label": "Format wpisów", "preferences.fields.delete_modal_label": "Pokazuj prośbę o potwierdzenie przed usunięciem wpisu", + "preferences.fields.developer_label": "Narzędzia dla programistów", "preferences.fields.demetricator_label": "Użyj Demetricatora", "preferences.fields.display_media.default": "Ukrywaj media oznaczone jako wrażliwe", "preferences.fields.display_media.hide_all": "Ukrywaj wszystkie media", @@ -710,8 +742,24 @@ "remote_instance.federation_panel.some_restrictions_message": "{siteTitle} nakłada pewne ograniczenia na {host}.", "remote_instance.pin_host": "Przypnij {instance}", "remote_instance.unpin_host": "Odepnij {instance}", + "remote_interaction.account_placeholder": "Wprowadź nazwę@domenę użytkownika, z którego chcesz wykonać działanie", + "remote_interaction.favourite": "Przejdź do polubienia", + "remote_interaction.favourite_title": "Polub wpis zdalnie", + "remote_interaction.follow": "Przejdź do obserwacji", + "remote_interaction.follow_title": "Obserwuj {user} zdalnie", + "remote_interaction.poll_vote": "Przejdź do ankiety", + "remote_interaction.poll_vote_title": "Zagłosuj w ankiecie zdalnie", + "remote_interaction.reblog": "Przejdź do wpisu", + "remote_interaction.reblog_title": "Udostępnij wpis zdalnie", + "remote_interaction.reply": "Przejdź do odpowiedzi", + "remote_interaction.reply_title": "Odpowiedz na wpis zdalnie", + "remote_interaction.user_not_found_error": "Nie można odnaleźć podanego użytkownika", "remote_timeline.filter_message": "Przeglądasz oś czasu {instance}", "reply_indicator.cancel": "Anuluj", + "reply_mentions.account.add": "Dodaj do wspomnianych", + "reply_mentions.account.remove": "Usuń z wspomnianych", + "reply_mentions.more": "i {count} więcej", + "reply_mentions.reply": "W odpowiedzi do {accounts}{more}", "report.block": "Zablokuj {target}", "report.block_hint": "Czy chcesz też zablokować to konto?", "report.forward": "Przekaż na {target}", @@ -726,6 +774,7 @@ "schedule_button.remove_schedule": "Opublikuj natychmiastowo", "scheduled_status.cancel": "Anuluj", "search.placeholder": "Szukaj", + "search.action": "Szukaj „{query}”", "search_popout.search_format": "Zaawansowane wyszukiwanie", "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.", "search_popout.tips.hashtag": "hasztag", diff --git a/app/soapbox/locales/zh-CN.json b/app/soapbox/locales/zh-CN.json index adeab0becd..567e943b86 100644 --- a/app/soapbox/locales/zh-CN.json +++ b/app/soapbox/locales/zh-CN.json @@ -1,5 +1,5 @@ { - "about.also_available": "Available in:", + "about.also_available": "其它版本:", "accordion.collapse": "折叠", "accordion.expand": "展开", "account.add_or_remove_from_list": "从列表中添加或删除", @@ -7,10 +7,9 @@ "account.block": "屏蔽 @{name}", "account.block_domain": "隐藏来自 {domain} 的内容", "account.blocked": "已屏蔽。", - "account.chat": "Chat with @{name}", - "account.column_settings.title": "Acccount timeline settings", - "account.deactivated": "账号被禁用", - "account.deactivated_description": "该账号已被禁用。", + "account.chat": "与 @{name} 聊天", + "account.deactivated": "帐号被禁用", + "account.deactivated_description": "该帐号已被禁用。", "account.direct": "发送私信给 @{name}", "account.domain_blocked": "站点已屏蔽", "account.edit_profile": "修改个人资料", @@ -21,9 +20,9 @@ "account.follows": "正在关注", "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", - "account.hide_reblogs": "隐藏来自 @{name} 的转嘟", + "account.hide_reblogs": "隐藏来自 @{name} 的转发", "account.link_verified_on": "此链接的所有权已在 {date} 被检查", - "account.locked_info": "此账号已锁嘟。账号的主人会手动审核关注者。", + "account.locked_info": "此帐号已上锁。帐号的主人会手动审核关注者。", "account.login": "登录", "account.media": "媒体", "account.member_since": "加入于 {date}", @@ -31,8 +30,8 @@ "account.moved_to": "{name} 已经迁移到:", "account.mute": "隐藏 @{name}", "account.muted": "已隐藏", - "account.posts": "嘟文", - "account.posts_with_replies": "嘟文和回复", + "account.posts": "帖文", + "account.posts_with_replies": "帖文和回复", "account.profile": "个人资料", "account.register": "注册", "account.remote_follow": "取消关注", @@ -40,18 +39,18 @@ "account.requested": "正在等待对方同意。点击以取消发送关注请求。", "account.requested_small": "等待同意", "account.share": "分享 @{name} 的个人资料", - "account.show_reblogs": "显示来自 @{name} 的转嘟", - "account.subscribe": "Subscribe to notifications from @{name}", - "account.subscribed": "Subscribed", + "account.show_reblogs": "显示来自 @{name} 的转发", + "account.subscribe": "订阅 @{name}", + "account.subscribed": "已订阅", "account.unblock": "解除屏蔽 @{name}", "account.unblock_domain": "不再隐藏来自 {domain} 的内容", "account.unendorse": "不在个人资料中推荐此用户", "account.unfollow": "取消关注", "account.unmute": "不再隐藏 @{name}", - "account.unsubscribe": "Unsubscribe to notifications from @{name}", + "account.unsubscribe": "取消订阅 @{name}", "account_gallery.none": "没有内容", - "account_search.placeholder": "Search for an account", - "account_timeline.column_settings.show_pinned": "Show pinned posts", + "account_search.placeholder": "搜索帐号", + "account_timeline.column_settings.show_pinned": "显示置顶", "admin.awaiting_approval.approved_message": "{acct} 的注册申请已通过!", "admin.awaiting_approval.empty_message": "没有未处理的举报,如果有新的举报,它就会显示在这里。", "admin.awaiting_approval.rejected_message": "{acct} 的注册请求被拒绝。", @@ -63,62 +62,73 @@ "admin.dashboard.registration_mode.open_label": "公开", "admin.dashboard.registration_mode_label": "注册模式", "admin.dashboard.settings_saved": "设定已保存!", - "admin.dashcounters.domain_count_label": "有联系的站点", - "admin.dashcounters.mau_label": "monthly active users", - "admin.dashcounters.retention_label": "user retention", - "admin.dashcounters.status_count_label": "总嘟文数", + "admin.dashcounters.domain_count_label": "互联站点", + "admin.dashcounters.mau_label": "月度活跃用户", + "admin.dashcounters.retention_label": "用户留存", + "admin.dashcounters.status_count_label": "总帖文数", "admin.dashcounters.user_count_label": "总用户数", - "admin.dashwidgets.email_list_header": "Email list", + "admin.dashwidgets.email_list_header": "邮件列表", "admin.dashwidgets.software_header": "软件版本", - "admin.latest_accounts_panel.expand_message": "Click to see {count} more {count, plural, one {account} other {accounts}}", - "admin.latest_accounts_panel.title": "Latest Accounts", + "admin.latest_accounts_panel.expand_message": "点击查看更多帐号", + "admin.latest_accounts_panel.title": "最近帐号", "admin.moderation_log.empty_message": "没有管理记录,如果你进行管理,历史记录就会显示在这里。", "admin.reports.actions.close": "关闭举报", - "admin.reports.actions.view_status": "查看嘟文", + "admin.reports.actions.view_status": "查看帖文", "admin.reports.empty_message": "没有未处理的举报,如果有新的举报,它就会显示在这里。", "admin.reports.report_closed_message": "对@{name} 的举报已关闭", - "admin.reports.report_title": "举报 {acct} 的嘟文", - "admin.statuses.actions.delete_status": "删除嘟文", - "admin.statuses.actions.mark_status_not_sensitive": "不再标记为敏感嘟文", - "admin.statuses.actions.mark_status_sensitive": "标记为敏感嘟文", - "admin.statuses.status_deleted_message": " @{acct} 的嘟文被删除", - "admin.statuses.status_marked_message_not_sensitive": "@{acct} 的嘟文不再被标记敏感。", - "admin.statuses.status_marked_message_sensitive": "Post by @{acct} 的嘟文被标记敏感。", - "admin.user_index.empty": "No users found.", - "admin.user_index.search_input_placeholder": "Who are you looking for?", - "admin.users.actions.deactivate_user": "禁用账号 @{name}", - "admin.users.actions.delete_user": "删除账号 @{name}", - "admin.users.actions.demote_to_moderator": "Demote @{name} to a moderator", - "admin.users.actions.demote_to_moderator_message": "@{acct} was demoted to a moderator", - "admin.users.actions.demote_to_user": "Demote @{name} to a regular user", - "admin.users.actions.demote_to_user_message": "@{acct} was demoted to a regular user", - "admin.users.actions.promote_to_admin": "Promote @{name} to an admin", - "admin.users.actions.promote_to_admin_message": "@{acct} was promoted to an admin", - "admin.users.actions.promote_to_moderator": "Promote @{name} to a moderator", - "admin.users.actions.promote_to_moderator_message": "@{acct} was promoted to a moderator", + "admin.reports.report_title": "举报 {acct} 的帖文", + "admin.statuses.actions.delete_status": "删除帖文", + "admin.statuses.actions.mark_status_not_sensitive": "不再标记为敏感", + "admin.statuses.actions.mark_status_sensitive": "标记为敏感", + "admin.statuses.status_deleted_message": " @{acct} 的帖文被删除", + "admin.statuses.status_marked_message_not_sensitive": "@{acct} 的帖文不再被标记敏感。", + "admin.statuses.status_marked_message_sensitive": "@{acct} 的帖文被标记敏感。", + "admin.user_index.empty": "未找到用户", + "admin.user_index.search_input_placeholder": "搜索哪位用户?", + "admin.users.actions.deactivate_user": "禁用帐号 @{name}", + "admin.users.actions.delete_user": "删除帐号 @{name}", + "admin.users.actions.demote_to_moderator": "降级 @{name} 为站务", + "admin.users.actions.demote_to_moderator_message": "@{acct} 已被降级为站务", + "admin.users.actions.demote_to_user": "降级 @{name} 为普通用户", + "admin.users.actions.demote_to_user_message": "@{acct} 已被降级为普通用户", + "admin.users.actions.promote_to_admin": "升级 @{name} 为站长", + "admin.users.actions.promote_to_admin_message": "@{acct} 已被升级为站长", + "admin.users.actions.promote_to_moderator": "升级 @{name} 为站务", + "admin.users.actions.promote_to_moderator_message": "@{acct} 已被升级为站务", "admin.users.actions.unverify_user": "取消认证 @{name}", - "admin.users.actions.verify_user": "认证账号 @{name}", + "admin.users.actions.verify_user": "认证帐号 @{name}", "admin.users.user_deactivated_message": "@{acct} 被禁用。", "admin.users.user_deleted_message": "@{acct} 被删除。", "admin.users.user_unverified_message": "@{acct} 被取消认证。", "admin.users.user_verified_message": "@{acct} 被认证。", "admin_nav.awaiting_approval": "等待同意", - "admin_nav.dashboard": "仪表盘", + "admin_nav.dashboard": "管理中心", "admin_nav.reports": "举报", - "alert.unexpected.clear_cookies": "clear cookies and browser data", - "alert.unexpected.help_text": "If the problem persists, please notify a site admin with a screenshot and information about your web browser. You may also {clear_cookies} (this will log you out).", + "alert.unexpected.clear_cookies": "清除cookie和浏览器数据", + "alert.unexpected.help_text": "如果问题仍然存在,请联系站长,附带截屏与浏览器版本信息。你也可以尝试登出,{clear_cookies}。", "alert.unexpected.message": "发生了意外错误。", - "alert.unexpected.return_home": "Return Home", + "alert.unexpected.return_home": "回到首页", "alert.unexpected.title": "哎呀!", - "aliases.account.add": "Create alias", - "aliases.account_label": "Old account:", - "aliases.aliases_list_delete": "Unlink alias", - "aliases.search": "Search your old account", - "aliases.success.add": "Account alias created successfully", - "aliases.success.remove": "Account alias removed successfully", - "auth.invalid_credentials": "Wrong username or password", - "auth.logged_out": "Logged out.", - "autosuggest_account_input.default_placeholder": "Search for an account", + "aliases.account.add": "创建别名", + "aliases.account_label": "旧帐号:", + "aliases.aliases_list_delete": "删除别名", + "aliases.search": "搜索旧帐号", + "aliases.success.add": "帐号别名创建成功", + "aliases.success.remove": "帐号别名删除成功", + "app_create.name_label": "应用别名", + "app_create.name_placeholder": "例如 'Soapbox'", + "app_create.redirect_uri_label": "重定向网址", + "app_create.restart": "创建另一个", + "app_create.results.app_label": "应用", + "app_create.results.explanation_text": "你已创建一个新应用及其令牌,请复制密钥等信息,离开本页面后这些信息将不再展示。", + "app_create.results.explanation_title": "应用创建成功", + "app_create.results.token_label": "OAuth令牌", + "app_create.scopes_label": "权限范围", + "app_create.scopes_placeholder": "例如'read write follow'", + "app_create.submit": "创建应用", + "app_create.website_label": "网站", + "auth.invalid_credentials": "用户名或密码错误", + "auth.logged_out": "已登出。", "backups.actions.create": "创建备份", "backups.empty_message": "没有找到备份 {action}。", "backups.empty_message.action": "现在要备份吗?", @@ -131,61 +141,63 @@ "bundle_modal_error.message": "载入组件时发生错误。", "bundle_modal_error.retry": "重试", "chat_box.actions.send": "发送", - "chat_box.input.placeholder": "发送私聊", - "chat_panels.main_window.empty": "还没有私聊,找人聊聊吧!", - "chat_panels.main_window.title": "私聊", + "chat_box.input.placeholder": "发送聊天信息", + "chat_panels.main_window.empty": "还没有聊天信息,找人聊聊吧!", + "chat_panels.main_window.title": "聊天", "chats.actions.delete": "删除", "chats.actions.more": "更多选项", "chats.actions.report": "举报用户", "chats.audio_toggle_off": "关闭声音提醒", "chats.audio_toggle_on": "打开声音提醒", "chats.dividers.today": "此刻", - "chats.search_placeholder": "Start a chat with…", + "chats.search_placeholder": "开始聊天……", "column.admin.awaiting_approval": "等待批准", - "column.admin.dashboard": "仪表盘", + "column.admin.dashboard": "管理中心", "column.admin.moderation_log": "管理记录", "column.admin.reports": "举报", "column.admin.reports.menu.moderation_log": "管理记录", - "column.aliases": "Account aliases", - "column.aliases.create_error": "Error creating alias", - "column.aliases.delete": "Delete", - "column.aliases.delete_error": "Error deleting alias", - "column.aliases.subheading_add_new": "Add New Alias", - "column.aliases.subheading_aliases": "Current aliases", + "column.aliases": "帐号别名", + "column.aliases.create_error": "创建别名出错", + "column.aliases.delete": "删除", + "column.aliases.delete_error": "删除别名出错", + "column.aliases.subheading_add_new": "新增别名", + "column.aliases.subheading_aliases": "当前别名", + "column.app_create": "创建应用", "column.backups": "备份", "column.blocks": "已屏蔽的用户", "column.bookmarks": "书签", - "column.chats": "私聊", + "column.chats": "聊天", "column.community": "本站时间轴", - "column.crypto_donate": "Donate Cryptocurrency", + "column.crypto_donate": "加密货币捐款", + "column.developers": "开发者", "column.direct": "私信", "column.domain_blocks": "已屏蔽的站点", "column.edit_profile": "编辑个人资料", - "column.export_data": "Export data", - "column.favourites": "Likes", - "column.federation_restrictions": "Federation Restrictions", - "column.filters": "屏蔽词", - "column.filters.add_new": "添加新的屏蔽词", + "column.export_data": "导出数据", + "column.favourites": "点赞", + "column.federation_restrictions": "联邦限制", + "column.filters": "过滤词", + "column.filters.add_new": "添加新的过滤词", "column.filters.conversations": "对话", - "column.filters.create_error": "添加屏蔽词时出错。", - "column.filters.delete": "删除屏蔽词", - "column.filters.delete_error": "删除屏蔽词时出错。", + "column.filters.create_error": "添加过滤词时出错。", + "column.filters.delete": "删除过滤词", + "column.filters.delete_error": "删除过滤词时出错。", "column.filters.drop_header": "丢弃而非隐藏", - "column.filters.drop_hint": "已屏蔽的嘟文会不可逆转地消失,即便移除屏蔽词之后也一样。", + "column.filters.drop_hint": "被丢弃的帖文会不可逆转地消失,即便移除过滤词之后也一样。", "column.filters.expires": "失效时间", "column.filters.expires_hint": "还未支持失效时间。", "column.filters.home_timeline": "本站时间轴", "column.filters.keyword": "关键词", "column.filters.notifications": "通知", "column.filters.public_timeline": "公共时间轴", - "column.filters.subheading_add_new": "添加新的屏蔽词", - "column.filters.subheading_filters": "查看已有屏蔽词", + "column.filters.subheading_add_new": "添加新的过滤词", + "column.filters.subheading_filters": "查看已有过滤词", "column.filters.whole_word_header": "整个词条", "column.filters.whole_word_hint": "如果关键词只包含字母和数字,将只在词语完全匹配时才会应用。", "column.follow_requests": "关注请求", "column.groups": "列表", "column.home": "主页", - "column.import_data": "导入备份", + "column.import_data": "导入数据", "column.info": "站点信息", "column.lists": "列表", "column.mfa": "双重认证", @@ -193,42 +205,43 @@ "column.mfa_confirm_button": "确定", "column.mfa_disable_button": "关闭", "column.mfa_setup": "同意并继续", - "column.mutes": "已隐藏的用户", + "column.mutes": "已静音的用户", "column.notifications": "通知", "column.preferences": "选项", "column.public": "跨站公共时间轴", "column.reblogs": "Reposts", "column.remote": "跨站公共时间轴", - "column.scheduled_statuses": "Scheduled Posts", - "column.search": "Search", + "column.scheduled_statuses": "定时帖文", + "column.search": "搜索", "column.security": "安全", "column.soapbox_config": "Soapbox设置", "column_back_button.label": "返回", "column_header.hide_settings": "隐藏设置", "column_header.show_settings": "显示设置", "community.column_settings.media_only": "仅媒体", - "community.column_settings.title": "Local timeline settings", - "compose.character_counter.title": "Used {chars} out of {maxChars} characters", - "compose.invalid_schedule": "You must schedule a post at least 5 minutes out.", - "compose.submit_success": "Your post was sent", - "compose_form.direct_message_warning": "这条嘟文仅对所有被提及的用户可见。", - "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。", - "compose_form.lock_disclaimer": "你的帐户没有 {locked} 。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", + "community.column_settings.title": "本地时间线设置", + "compose.character_counter.title": "最大字符数: {maxChars}; 已使用 {chars}", + "compose.invalid_schedule": "定时帖文只能设置为五分钟后或更晚", + "compose.submit_success": "帖文已发送", + "compose_form.direct_message_warning": "这条帖文仅对所有被提及的用户可见。", + "compose_form.hashtag_warning": "这条帖文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的帖文才能通过话题标签进行搜索。", + "compose_form.lock_disclaimer": "你的帐号没有 {locked} 。任何人都可以在关注你后立即查看仅关注者可见的帖文。", "compose_form.lock_disclaimer.lock": "开启保护", "compose_form.markdown.marked": "Markdown已开启", "compose_form.markdown.unmarked": "Markdown已关闭", - "compose_form.message": "Message", + "compose_form.message": "私信", "compose_form.placeholder": "在想什么?", "compose_form.poll.add_option": "添加一个选项", "compose_form.poll.duration": "投票持续时间", "compose_form.poll.option_placeholder": "选项 {number}", "compose_form.poll.remove_option": "移除这个选项", - "compose_form.poll.type.hint": "点击选择单选或多选", - "compose_form.publish": "嘟嘟", + "compose_form.poll.switch_to_multiple": "投票改为多选", + "compose_form.poll.switch_to_single": "投票改为单选", + "compose_form.publish": "发布", "compose_form.publish_loud": "{publish}!", - "compose_form.schedule": "Schedule", - "compose_form.scheduled_statuses.click_here": "Click here", - "compose_form.scheduled_statuses.message": "You have scheduled posts. {click_here} to see them.", + "compose_form.schedule": "定时发布", + "compose_form.scheduled_statuses.click_here": "点击此处", + "compose_form.scheduled_statuses.message": "你有定时帖文,{click_here}查看。", "compose_form.sensitive.hide": "标记媒体为敏感内容", "compose_form.sensitive.marked": "媒体已被标记为敏感内容。", "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容。", @@ -237,21 +250,21 @@ "compose_form.spoiler_placeholder": "折叠部分的警告消息", "confirmation_modal.cancel": "取消", "confirmations.admin.deactivate_user.confirm": "禁用 @{name}", - "confirmations.admin.deactivate_user.message": "你确定要禁用账号 @{acct} 吗?这无法撤回!", - "confirmations.admin.delete_local_user.checkbox": "我确定我要删除本站账号", - "confirmations.admin.delete_status.confirm": "删除嘟文", - "confirmations.admin.delete_status.message": "你确定要删除 @{acct} 的嘟文吗?这无法撤回!", - "confirmations.admin.delete_user.confirm": "删除账号 @{name}", - "confirmations.admin.delete_user.message": "你确定要删除本站账号 @{acct} 吗?这无法撤回!", - "confirmations.admin.mark_status_not_sensitive.confirm": "不再标记为敏感嘟文", - "confirmations.admin.mark_status_not_sensitive.message": "你要标记账号 @{acct} 的嘟文不再敏感", - "confirmations.admin.mark_status_sensitive.confirm": "标记为敏感嘟文", - "confirmations.admin.mark_status_sensitive.message": "你要标记账号 @{acct} 的嘟文为敏感", + "confirmations.admin.deactivate_user.message": "你确定要禁用帐号 @{acct} 吗?这无法撤回!", + "confirmations.admin.delete_local_user.checkbox": "我确定我要删除本站帐号", + "confirmations.admin.delete_status.confirm": "删除帖文", + "confirmations.admin.delete_status.message": "你确定要删除 @{acct} 的帖文吗?这无法撤回!", + "confirmations.admin.delete_user.confirm": "删除帐号 @{name}", + "confirmations.admin.delete_user.message": "你确定要删除本站帐号 @{acct} 吗?这无法撤回!", + "confirmations.admin.mark_status_not_sensitive.confirm": "不再标记为敏感帖文", + "confirmations.admin.mark_status_not_sensitive.message": "你要标记帐号 @{acct} 的帖文不再敏感", + "confirmations.admin.mark_status_sensitive.confirm": "标记为敏感帖文", + "confirmations.admin.mark_status_sensitive.message": "你要标记帐号 @{acct} 的帖文为敏感", "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", "confirmations.block.message": "你确定要屏蔽 {name} 吗?", "confirmations.delete.confirm": "删除", - "confirmations.delete.message": "你确定要删除这条嘟文吗?", + "confirmations.delete.message": "你确定要删除这条帖文吗?", "confirmations.delete_list.confirm": "删除", "confirmations.delete_list.message": "你确定要永久删除这个列表吗?", "confirmations.domain_block.confirm": "隐藏整个站点的内容", @@ -259,57 +272,59 @@ "confirmations.mute.confirm": "隐藏", "confirmations.mute.message": "你确定要隐藏 {name} 吗?", "confirmations.redraft.confirm": "删除并重新编辑", - "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和收藏都会被清除,回复将会失去关联。", - "confirmations.register.needs_approval": "你的账号在被管理员审核,请稍等", + "confirmations.redraft.message": "你确定要删除这条帖文并重新编辑它吗?所有相关的转发和点赞都会被清除,回复将会失去关联。", + "confirmations.register.needs_approval": "你的帐号在被管理员审核,请稍等", "confirmations.register.needs_confirmation": "请检查你的邮箱 {email} ,我们需要邮箱验证注册", "confirmations.reply.confirm": "回复", "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?", "confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", - "crypto_donate.explanation_box.message": "{siteTitle} accepts cryptocurrency donations. You may send a donation to any of the addresses below. Thank you for your support!", - "crypto_donate.explanation_box.title": "Sending cryptocurrency donations", - "crypto_donate_panel.actions.more": "Click to see {count} more {count, plural, one {wallet} other {wallets}}", - "crypto_donate_panel.heading": "Donate Cryptocurrency", - "crypto_donate_panel.intro.message": "{siteTitle} accepts cryptocurrency donations to fund our service. Thank you for your support!", - "datepicker.hint": "Scheduled to post at…", - "direct.search_placeholder": "Send a message to…", - "donate": "Donate", - "donate_crypto": "Donate cryptocurrency", - "edit_federation.followers_only": "Hide posts except to followers", - "edit_federation.force_nsfw": "Force attachments to be marked sensitive", - "edit_federation.media_removal": "Strip media", - "edit_federation.reject": "Reject all activities", - "edit_federation.save": "Save", - "edit_federation.success": "{host} federation was updated", - "edit_federation.unlisted": "Force posts unlisted", - "edit_profile.error": "Profile update failed", - "edit_profile.fields.accepts_email_list_label": "Subscribe to newsletter", + "crypto_donate.explanation_box.message": "{siteTitle} 接受用户向以下钱包地址捐赠任意数量的加密货币。感谢你的支持!", + "crypto_donate.explanation_box.title": "发送加密货币捐赠", + "crypto_donate_panel.actions.more": "点击查看 {count} 个 {count, plural, one {钱包} other {钱包}}", + "crypto_donate_panel.heading": "捐赠加密货币", + "crypto_donate_panel.intro.message": "{siteTitle} 接受用户捐赠加密货币。感谢你的支持!", + "datepicker.hint": "设定发送时间……", + "developers.navigation.app_create_label": "创建应用", + "developers.navigation.intentional_error_label": "触发一个错误", + "direct.search_placeholder": "发送私信给……", + "donate": "捐赠", + "donate_crypto": "捐赠加密货币", + "edit_federation.followers_only": "对关注者以外的用户隐藏帖文", + "edit_federation.force_nsfw": "将附件强制标记为敏感", + "edit_federation.media_removal": "去掉媒体", + "edit_federation.reject": "拒绝所有信息交互", + "edit_federation.save": "保存", + "edit_federation.success": "{host} 联邦设定已保存", + "edit_federation.unlisted": "将帖文强制标记为不公开", + "edit_profile.error": "个人资料更新失败", + "edit_profile.fields.accepts_email_list_label": "接收邮件列表", "edit_profile.fields.avatar_label": "头像", "edit_profile.fields.bio_label": "简介", - "edit_profile.fields.bio_placeholder": "Tell us about yourself.", - "edit_profile.fields.bot_label": "这是一个机器人帐户", + "edit_profile.fields.bio_placeholder": "请介绍一下你自己。", + "edit_profile.fields.bot_label": "这是一个机器人帐号", "edit_profile.fields.display_name_label": "昵称", - "edit_profile.fields.display_name_placeholder": "Name", + "edit_profile.fields.display_name_placeholder": "你的昵称", "edit_profile.fields.header_label": "个人资料页横幅图片", - "edit_profile.fields.hide_network_label": "Hide network", - "edit_profile.fields.locked_label": "保护你的帐户(锁嘟)", + "edit_profile.fields.hide_network_label": "隐藏关注信息", + "edit_profile.fields.locked_label": "保护你的帐号", "edit_profile.fields.meta_fields.content_placeholder": "内容", "edit_profile.fields.meta_fields.label_placeholder": "标签", - "edit_profile.fields.meta_fields_label": "验证元数据", - "edit_profile.fields.stranger_notifications_label": "Block notifications from strangers", + "edit_profile.fields.meta_fields_label": "帐号元数据", + "edit_profile.fields.stranger_notifications_label": "不接收来自陌生人的通知", "edit_profile.fields.verified_display_name": "经过验证的用户不能更新他们的昵称", - "edit_profile.hints.accepts_email_list": "Opt-in to news and marketing updates.", - "edit_profile.hints.avatar": "文件大小限制 2.0 MB,只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 400x400px。", - "edit_profile.hints.bot": "来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控。", - "edit_profile.hints.header": "文件大小限制 2.0 MB,只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 1500x500px。", - "edit_profile.hints.hide_network": "Who you follow and who follows you will not be shown on your profile", + "edit_profile.hints.accepts_email_list": "接收新闻和推广邮件", + "edit_profile.hints.avatar": "只支持 PNG、GIF 或 JPG 格式,大小不超过{size}。图片分辨率将会压缩至 1500x500px。", + "edit_profile.hints.bot": "来自这个帐号的绝大多数操作都是自动进行的,并且可能无人监控。", + "edit_profile.hints.header": "只支持 PNG、GIF 或 JPG 格式,大小不超过{size}。图片分辨率将会压缩至 1500x500px。", + "edit_profile.hints.hide_network": "个人资料中不显示你关注的用户和关注你的用户。", "edit_profile.hints.locked": "你需要手动审核所有关注请求。", - "edit_profile.hints.meta_fields": "你可以以表格形式展示 {count, plural, one {# 个项目} other {# 个项目}} 在你的个人资料页上。", - "edit_profile.hints.stranger_notifications": "Only show notifications from people you follow", - "edit_profile.meta_fields.add": "Add new item", + "edit_profile.hints.meta_fields": "你可以在个人资料页上以表格形式展示 {count, plural, one {# 项元数据} other {# 项元数据}} 。", + "edit_profile.hints.stranger_notifications": "只显示来自你所关注用户的通知。", + "edit_profile.meta_fields.add": "新增元数据", "edit_profile.save": "保存", - "edit_profile.success": "Profile saved!", - "embed.instructions": "要在你的站点上嵌入这条嘟文,请复制以下代码:", + "edit_profile.success": "个人资料已保存。", + "embed.instructions": "要在你的站点上嵌入这条帖文,请复制以下代码:", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", "emoji_button.custom": "自定义", @@ -325,49 +340,49 @@ "emoji_button.search_results": "搜索结果", "emoji_button.symbols": "符号", "emoji_button.travel": "旅行和地点", - "empty_column.account_blocked": "You are blocked by @{accountUsername}.", - "empty_column.account_favourited_statuses": "This user doesn't have any liked posts yet.", - "empty_column.account_timeline": "这里没有嘟文!", + "empty_column.account_blocked": "你被 @{accountUsername} 屏蔽了。", + "empty_column.account_favourited_statuses": "没有点赞帖文", + "empty_column.account_timeline": "这里没有帖文!", "empty_column.account_unavailable": "个人资料不可用", - "empty_column.aliases": "You haven't created any account alias yet.", - "empty_column.aliases.suggestions": "There are no account suggestions available for the provided term.", + "empty_column.aliases": "尚未创建别名", + "empty_column.aliases.suggestions": "没有相匹配的帐号建议", "empty_column.blocks": "你目前没有屏蔽任何用户。", - "empty_column.bookmarks": "你还没有任何书签,一旦你将嘟文加入书签,它就会显示在这里", + "empty_column.bookmarks": "你还没有任何书签,一旦你将帖文加入书签,它就会显示在这里", "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!", "empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。", "empty_column.domain_blocks": "目前没有被隐藏的站点。", - "empty_column.favourited_statuses": "你还没有收藏过任何嘟文。收藏过的嘟文会显示在这里。", - "empty_column.favourites": "没有人收藏过这条嘟文。如果有人收藏了,就会显示在这里。", - "empty_column.filters": "你还没有添加任何屏蔽词。", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.favourited_statuses": "你还没有点赞过任何帖文。点赞过的帖文会显示在这里。", + "empty_column.favourites": "没有人点赞过这条帖文。如果有人点赞了,就会显示在这里。", + "empty_column.filters": "你还没有添加任何过滤词。", + "empty_column.follow_recommendations": "似乎暂未有推荐信息,你可以尝试搜索用户或者浏览热门标签。", "empty_column.follow_requests": "你没有收到新的关注请求。收到了之后就会显示在这里。", - "empty_column.group": "此列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。", + "empty_column.group": "此列表中暂时没有内容。列表中用户所发送的的新帖文将会在这里显示。", "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你还没有关注任何用户。快看看 {public} ,向其他人问个好吧。", "empty_column.home.local_tab": " {site_title} 本站时间轴", - "empty_column.list": "这个列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。", + "empty_column.list": "这个列表中暂时没有内容。列表中用户所发送的的新帖文将会在这里显示。", "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", "empty_column.mutes": "你没有隐藏任何用户。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", - "empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了。", + "empty_column.public": "这里什么都没有!写一些公开的帖文,或者关注其他服务器的用户后,这里就会有帖文出现了。", "empty_column.remote": "这里什么都没有!关注本站或者其他站点的用户后,这里就会有用户出现了。", - "empty_column.scheduled_statuses": "You don't have any scheduled statuses yet. When you add one, it will show up here.", - "empty_column.search.accounts": "There are no people results for \"{term}\"", - "empty_column.search.hashtags": "There are no hashtags results for \"{term}\"", - "empty_column.search.statuses": "There are no posts results for \"{term}\"", - "export_data.actions.export": "Export", - "export_data.actions.export_blocks": "Export blocks", - "export_data.actions.export_follows": "Export follows", - "export_data.actions.export_mutes": "Export mutes", - "export_data.blocks_label": "Blocks", - "export_data.follows_label": "Follows", - "export_data.hints.blocks": "Get a CSV file containing a list of blocked accounts", - "export_data.hints.follows": "Get a CSV file containing a list of followed accounts", - "export_data.hints.mutes": "Get a CSV file containing a list of muted accounts", - "export_data.mutes_label": "Mutes", - "export_data.success.blocks": "Blocks exported successfully", - "export_data.success.followers": "Followers exported successfully", - "export_data.success.mutes": "Mutes exported successfully", + "empty_column.scheduled_statuses": "暂无定时帖文。当你发布定时帖文后,它们会显示在这里。", + "empty_column.search.accounts": "无帐号匹配 \"{term}\"", + "empty_column.search.hashtags": "无标签匹配 \"{term}\"", + "empty_column.search.statuses": "无帖文匹配 \"{term}\"", + "export_data.actions.export": "导出", + "export_data.actions.export_blocks": "导出屏蔽列表", + "export_data.actions.export_follows": "导出关注列表", + "export_data.actions.export_mutes": "导出静音列表", + "export_data.blocks_label": "屏蔽", + "export_data.follows_label": "关注", + "export_data.hints.blocks": "下载屏蔽列表CSV文件", + "export_data.hints.follows": "下载关注列表CSV文件", + "export_data.hints.mutes": "下载静音列表CSV文件", + "export_data.mutes_label": "静音", + "export_data.success.blocks": "屏蔽列表导出完毕", + "export_data.success.followers": "关注列表导出完毕", + "export_data.success.mutes": "静音列表导出完毕", "federation_restriction.federated_timeline_removal": "Fediverse timeline removal", "federation_restriction.followers_only": "Hidden except to followers", "federation_restriction.full_media_removal": "Full media removal", @@ -377,32 +392,32 @@ "federation_restrictions.explanation_box.message": "Normally servers on the Fediverse can communicate freely. {siteTitle} has imposed restrictions on the following servers.", "federation_restrictions.explanation_box.title": "Instance-specific policies", "federation_restrictions.not_disclosed_message": "{siteTitle} does not disclose federation restrictions through the API.", - "fediverse_tab.explanation_box.dismiss": "Don't show again", - "fediverse_tab.explanation_box.explanation": "{site_title} 是联邦宇宙的一部分, 一个由数个站点组成的社交网络。你在这里看到的嘟文来自其他站点。你可以自由地与他们打交道,或者屏蔽任何你不喜欢的站点。请注意第二个@符号后的完整用户名,以了解嘟文来自哪个站点。要想只看到 {site_title} 的嘟文,请访问 {local} 。", + "fediverse_tab.explanation_box.dismiss": "不再显示", + "fediverse_tab.explanation_box.explanation": "{site_title} 是联邦宇宙的一部分, 一个由数个站点组成的社交网络。你在这里看到的帖文来自其他站点。你可以自由地与他们打交道,或者屏蔽任何你不喜欢的站点。请注意第二个@符号后的完整用户名,以了解帖文来自哪个站点。要想只看到 {site_title} 的帖文,请访问 {local} 。", "fediverse_tab.explanation_box.title": "什么是联邦宇宙?", - "filters.added": "Filter added.", - "filters.context_header": "屏蔽词场景", - "filters.context_hint": "屏蔽词的应用场景", - "filters.filters_list_context_label": "屏蔽词场景:", - "filters.filters_list_delete": "删除屏蔽词", - "filters.filters_list_details_label": "屏蔽词设定:", + "filters.added": "过滤已添加", + "filters.context_header": "过滤词场景", + "filters.context_hint": "过滤词的应用场景", + "filters.filters_list_context_label": "过滤词场景:", + "filters.filters_list_delete": "删除过滤词", + "filters.filters_list_details_label": "过滤词设定:", "filters.filters_list_drop": "丢弃", "filters.filters_list_hide": "隐藏", "filters.filters_list_phrase_label": "关键词:", "filters.filters_list_whole-word": "整个词条", - "filters.removed": "Filter deleted.", - "follow_recommendations.done": "Done", + "filters.removed": "过滤已移除", + "follow_recommendations.done": "完成", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", "follow_request.authorize": "同意", "follow_request.reject": "拒绝", - "forms.copy": "Copy", + "forms.copy": "复制", "getting_started.open_source_notice": "{code_name} 是开源软件。欢迎前往 GitLab({code_link} (v{code_version}))贡献代码或反馈问题。", "group.detail.archived_group": "Archived group", - "group.members.empty": "这个列表没有任何账号。", - "group.removed_accounts.empty": "这个列表没有被移除的账号", + "group.members.empty": "这个列表没有任何帐号。", + "group.removed_accounts.empty": "这个列表没有被移除的帐号", "groups.card.join": "加入", - "groups.card.members": "Members", + "groups.card.members": "成员", "groups.card.roles.admin": "You're an admin", "groups.card.roles.member": "You're a member", "groups.card.view": "查看", @@ -417,14 +432,14 @@ "groups.form.update": "更新列表", "groups.join": "Join group", "groups.leave": "Leave group", - "groups.removed_accounts": "已移除账号", + "groups.removed_accounts": "已移除帐号", "groups.sidebar-panel.item.no_recent_activity": "No recent activity", "groups.sidebar-panel.item.view": "new posts", "groups.sidebar-panel.show_all": "Show all", "groups.sidebar-panel.title": "Groups You're In", "groups.tab_admin": "管理", "groups.tab_featured": "热门", - "groups.tab_member": "Member", + "groups.tab_member": "成员", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", @@ -433,34 +448,34 @@ "header.home.label": "主页", "header.login.label": "登录", "home.column_settings.show_direct": "显示私信", - "home.column_settings.show_reblogs": "显示转嘟", + "home.column_settings.show_reblogs": "显示转发", "home.column_settings.show_replies": "显示回复", - "home.column_settings.title": "Home settings", + "home.column_settings.with_muted": "显示被静音的帖文", "home_column.lists": "列表", - "home_column_header.all": "All", + "home_column_header.all": "全部", "home_column_header.fediverse": "联邦宇宙", "home_column_header.home": "主页", "icon_button.icons": "图标", "icon_button.label": "选择图标", "icon_button.not_found": "没有图标! (╯°□°)╯︵ ┻━┻", "import_data.actions.import": "导入", - "import_data.actions.import_blocks": "导入已屏蔽账号", - "import_data.actions.import_follows": "导入已关注账号", - "import_data.actions.import_mutes": "导入已静音账号", - "import_data.blocks_label": "已屏蔽账号", - "import_data.follows_label": "已关注账号", - "import_data.hints.blocks": "请上传包含已屏蔽账号的CSV文件。", - "import_data.hints.follows": "请上传包含已关注账号的CSV文件。", - "import_data.hints.mutes": "请上传包含已静音账号的CSV文件。", - "import_data.mutes_label": "已静音账号", - "import_data.success.blocks": "Blocks imported successfully", - "import_data.success.followers": "Followers imported successfully", - "import_data.success.mutes": "Mutes imported successfully", + "import_data.actions.import_blocks": "导入屏蔽列表", + "import_data.actions.import_follows": "导入关注列表", + "import_data.actions.import_mutes": "导入静音列表", + "import_data.blocks_label": "屏蔽帐号", + "import_data.follows_label": "关注帐号", + "import_data.hints.blocks": "上传包含屏蔽帐号列表的CSV文件。", + "import_data.hints.follows": "上传包含关注帐号列表的CSV文件。", + "import_data.hints.mutes": "上传包含静音帐号列表的CSV文件。", + "import_data.mutes_label": "静音帐号", + "import_data.success.blocks": "屏蔽帐号列表导入完成", + "import_data.success.followers": "关注帐号列表导入完成", + "import_data.success.mutes": "静音帐号列表导入完成", "intervals.full.days": "{number} 天", "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", - "introduction.federation.action": "Next", - "introduction.federation.home.headline": "Home", + "introduction.federation.action": "下一步", + "introduction.federation.home.headline": "主页", "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", "introduction.interactions.action": "Finish tutorial!", "introduction.interactions.favourite.headline": "Favorite", @@ -474,50 +489,50 @@ "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", "keyboard_shortcuts.back": "返回上一页", "keyboard_shortcuts.blocked": "打开被屏蔽用户列表", - "keyboard_shortcuts.boost": "转嘟", - "keyboard_shortcuts.compose": "选择嘟文撰写框", + "keyboard_shortcuts.boost": "转发", + "keyboard_shortcuts.compose": "选择帖文撰写框", "keyboard_shortcuts.down": "在列表中让光标下移", - "keyboard_shortcuts.enter": "展开嘟文", - "keyboard_shortcuts.favourite": "收藏嘟文", - "keyboard_shortcuts.favourites": "打开收藏列表", + "keyboard_shortcuts.enter": "展开帖文", + "keyboard_shortcuts.favourite": "点赞帖文", + "keyboard_shortcuts.favourites": "打开点赞列表", "keyboard_shortcuts.heading": "快捷键列表", "keyboard_shortcuts.home": "打开主页时间轴", "keyboard_shortcuts.hotkey": "快捷键", "keyboard_shortcuts.legend": "显示此列表", - "keyboard_shortcuts.mention": "提及嘟文作者", + "keyboard_shortcuts.mention": "提及帖文作者", "keyboard_shortcuts.muted": "打开隐藏用户列表", "keyboard_shortcuts.my_profile": "打开你的个人资料", "keyboard_shortcuts.notifications": "打开通知栏", - "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "打开置顶嘟文列表", + "keyboard_shortcuts.open_media": "打开媒体", + "keyboard_shortcuts.pinned": "打开置顶帖文列表", "keyboard_shortcuts.profile": "打开作者的个人资料", - "keyboard_shortcuts.react": "to react", - "keyboard_shortcuts.reply": "回复嘟文", + "keyboard_shortcuts.react": "互动", + "keyboard_shortcuts.reply": "回复", "keyboard_shortcuts.requests": "打开关注请求列表", "keyboard_shortcuts.search": "选择搜索框", "keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文", "keyboard_shortcuts.toggle_sensitivity": "显示/隐藏媒体", - "keyboard_shortcuts.toot": "发送新嘟文", + "keyboard_shortcuts.toot": "发帖", "keyboard_shortcuts.unfocus": "取消输入", "keyboard_shortcuts.up": "在列表中让光标上移", "lightbox.close": "关闭", "lightbox.next": "下一个", "lightbox.previous": "上一个", "lightbox.view_context": "查看上下文", - "list.click_to_add": "点击以添加账号到列表", - "list_adder.header_title": "在列表内添加或删除账号", + "list.click_to_add": "点击以添加帐号到列表", + "list_adder.header_title": "在列表内添加或删除帐号", "lists.account.add": "添加到列表", "lists.account.remove": "从列表中移除", "lists.edit": "编辑列表", - "lists.edit.submit": "更改标题", + "lists.edit.submit": "更改列表", "lists.new.create": "新建列表", - "lists.new.create_title": "创建标题", - "lists.new.save_title": "保存标题", + "lists.new.create_title": "创建列表", + "lists.new.save_title": "保存列表", "lists.new.title_placeholder": "新列表的标题", "lists.search": "搜索你关注的人", "lists.subheading": "你的列表", "loading_indicator.label": "加载中……", - "login.fields.instance_label": "Instance", + "login.fields.instance_label": "实例", "login.fields.instance_placeholder": "example.com", "login.fields.otp_code_hint": "输入双重认证应用里的代码,或者输入恢复代码", "login.fields.otp_code_label": "双重认证代码:", @@ -528,10 +543,10 @@ "login.otp_log_in.fail": "密码错误,请重试。", "login.reset_password_hint": "登录时出现问题了吗?", "media_gallery.toggle_visible": "切换显示/隐藏", - "media_panel.empty_message": "No media found.", + "media_panel.empty_message": "未找到媒体", "media_panel.title": "媒体", - "mfa.mfa_disable_enter_password": "输入账号密码以禁用双重认证:", - "mfa.mfa_setup_enter_password": "输入账号密码以验证身份:", + "mfa.mfa_disable_enter_password": "输入帐号密码以禁用双重认证:", + "mfa.mfa_setup_enter_password": "输入帐号密码以验证身份:", "mfa.mfa_setup_scan_description": "请使用 Google 身份验证器或其他的TOTP双重认证手机应用扫描此处的二维码。启用双重认证后,在登录时,你需要输入该应用生成的代码。", "mfa.mfa_setup_scan_key": "双重认证代码:", "mfa.mfa_setup_scan_title": "如果你无法扫描二维码,请手动输入下列文本:", @@ -542,154 +557,165 @@ "mfa.setup_hint": "请跟随以下步骤以开启双重认证", "mfa.setup_otp_title": "双重认证已关闭", "mfa.setup_recoverycodes": "恢复代码", - "mfa.setup_warning": "请立即将恢复代码保存或写到纸上,否则你可能无法登录账号。", - "missing_description_modal.cancel": "Cancel", - "missing_description_modal.continue": "Post", - "missing_description_modal.text": "You have not entered a description for all attachments. Continue anyway?", + "mfa.setup_warning": "请立即将恢复代码保存或写到纸上,否则你可能无法登录帐号。", + "missing_description_modal.cancel": "取消", + "missing_description_modal.continue": "发布", + "missing_description_modal.text": "附件没有描述信息,仍然继续发布吗?", "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", "morefollows.followers_label": "和{count} 来自其他站点的 {count, plural, one {关注者} other {关注者}} 。", "morefollows.following_label": "和{count} 来自其他站点的 {count, plural, one {正在关注} other {正在关注}} 。", "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", - "navigation.chats": "Chats", - "navigation.dashboard": "Dashboard", - "navigation.direct_messages": "Messages", - "navigation.home": "Home", - "navigation.invites": "Invites", - "navigation.notifications": "Notifications", - "navigation.search": "Search", - "navigation_bar.account_aliases": "Account aliases", + "navigation.chats": "聊天", + "navigation.dashboard": "管理中心", + "navigation.developers": "开发者", + "navigation.direct_messages": "私信", + "navigation.home": "主页", + "navigation.invites": "邀请", + "navigation.notifications": "通知", + "navigation.search": "搜索", + "navigation_bar.account_aliases": "帐号别名", "navigation_bar.admin_settings": "管理员设置", - "navigation_bar.blocks": "已屏蔽的用户", - "navigation_bar.bookmarks": "Bookmarks", - "navigation_bar.compose": "撰写新嘟文", - "navigation_bar.compose_direct": "Direct message", - "navigation_bar.domain_blocks": "已屏蔽的站点", - "navigation_bar.export_data": "Export data", - "navigation_bar.favourites": "收藏的内容", - "navigation_bar.filters": "屏蔽关键词", + "navigation_bar.blocks": "屏蔽", + "navigation_bar.bookmarks": "书签", + "navigation_bar.compose": "撰写新帖", + "navigation_bar.compose_direct": "撰写私信", + "navigation_bar.domain_blocks": "屏蔽站点", + "navigation_bar.export_data": "导出数据", + "navigation_bar.favourites": "点赞的内容", + "navigation_bar.filters": "过滤", "navigation_bar.follow_requests": "关注请求", - "navigation_bar.import_data": "导入备份", + "navigation_bar.import_data": "导入数据", "navigation_bar.info": "关于本站", + "navigation_bar.invites": "邀请", "navigation_bar.keyboard_shortcuts": "快捷键列表", - "navigation_bar.lists": "Lists", + "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", - "navigation_bar.messages": "Messages", - "navigation_bar.mutes": "已隐藏的用户", - "navigation_bar.pins": "置顶嘟文", + "navigation_bar.messages": "私信", + "navigation_bar.mutes": "静音", + "navigation_bar.pins": "置顶帖文", "navigation_bar.preferences": "首选项", "navigation_bar.security": "安全", "navigation_bar.soapbox_config": "Soapbox设置", "notification.chat_mention": "{name} 回复了你", - "notification.favourite": "{name} 收藏了你的嘟文", + "notification.favourite": "{name} 赞了你的帖文", "notification.follow": "{name} 开始关注你", "notification.follow_request": "{name} 请求关注你", "notification.mention": "{name} 提及了你", "notification.move": "{name} moved to {targetName}", - "notification.pleroma:emoji_reaction": "{name} 用Emoji互动了你的嘟文", + "notification.pleroma:emoji_reaction": "{name} 对你的帖文回应了表情", "notification.poll": "你参与的一个投票已经结束", - "notification.reblog": "{name} 转嘟了你的嘟文", + "notification.reblog": "{name} 转发了你的帖文", "notifications.clear": "清空通知列表", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.emoji_react": "用Emoji互动:", - "notifications.column_settings.favourite": "当你的嘟文被收藏时:", + "notifications.column_settings.favourite": "当你的帖文被点赞时:", "notifications.column_settings.filter_bar.advanced": "显示所有类别", "notifications.column_settings.filter_bar.category": "快速过滤栏", "notifications.column_settings.filter_bar.show": "显示", "notifications.column_settings.follow": "当有人关注你时:", "notifications.column_settings.follow_request": "新的关注请求:", - "notifications.column_settings.mention": "当有人在嘟文中提及你时:", - "notifications.column_settings.move": "Moves:", + "notifications.column_settings.mention": "当有人在帖文中提及你时:", + "notifications.column_settings.move": "迁移:", "notifications.column_settings.poll": "投票结果:", "notifications.column_settings.push": "推送通知", - "notifications.column_settings.reblog": "当有人转嘟了你的嘟文时:", + "notifications.column_settings.reblog": "当有人转发了你的帖文时:", "notifications.column_settings.show": "在通知栏显示", "notifications.column_settings.sound": "播放音效", "notifications.column_settings.sounds": "音效设置", "notifications.column_settings.sounds.all_sounds": "收到所有类型的通知时播放音效", - "notifications.column_settings.title": "Notification settings", + "notifications.column_settings.title": "通知设置", "notifications.filter.all": "全部", - "notifications.filter.boosts": "转嘟", + "notifications.filter.boosts": "转发", "notifications.filter.emoji_reacts": "Emoji互动", - "notifications.filter.favourites": "收藏", + "notifications.filter.favourites": "点赞", "notifications.filter.follows": "关注", "notifications.filter.mentions": "提及", - "notifications.filter.moves": "Moves", + "notifications.filter.moves": "迁移", "notifications.filter.polls": "投票结果", "notifications.group": "{count} 条通知", "notifications.queue_label": "点击查看 {count} 新 {count, plural, one {通知} other {通知}}", - "password_reset.confirmation": "Check your email for confirmation.", - "password_reset.fields.username_placeholder": "Email or username", - "password_reset.reset": "Reset password", - "pinned_statuses.none": "没有置顶嘟文.", + "password_reset.confirmation": "请查阅确认邮件。", + "password_reset.fields.username_placeholder": "电子邮件或用户名", + "password_reset.reset": "重置密码", + "pinned_statuses.none": "没有置顶帖文", "poll.closed": "已关闭", "poll.refresh": "刷新", "poll.total_votes": "{count} 票", "poll.vote": "投票", + "poll.voted": "你投给了这个选项", + "poll.votes": "{votes, plural, one {# vote} other {# votes}}", "poll_button.add_poll": "发起投票", "poll_button.remove_poll": "移除投票", "preferences.fields.auto_play_gif_label": "自动播放GIF动图", - "preferences.fields.autoload_timelines_label": "Automatically load new posts when scrolled to the top of the page", - "preferences.fields.boost_modal_label": "转嘟前确认", - "preferences.fields.content_type_label": "嘟文格式", - "preferences.fields.delete_modal_label": "删除嘟文前确认", + "preferences.fields.autoload_more_label": "滚动到时间线底部时自动加载更多帖文", + "preferences.fields.autoload_timelines_label": "滚动到时间线顶部时自动加载新帖", + "preferences.fields.boost_modal_label": "转发前确认", + "preferences.fields.content_type_label": "发帖格式", + "preferences.fields.delete_modal_label": "删除帖文前确认", "preferences.fields.demetricator_label": "使用计量器", + "preferences.fields.developer_label": "开发工具", "preferences.fields.display_media.default": "隐藏被标记为敏感内容的媒体", "preferences.fields.display_media.hide_all": "显示所有的媒体", "preferences.fields.display_media.show_all": "隐藏所有媒体", "preferences.fields.dyslexic_font_label": "阅读障碍模式", - "preferences.fields.expand_spoilers_label": "始终展开标有内容警告的帖子", + "preferences.fields.expand_spoilers_label": "始终展开标有内容警告的帖文", "preferences.fields.halloween_label": "万圣节主题", "preferences.fields.language_label": "语言", "preferences.fields.media_display_label": "媒体展示", - "preferences.fields.missing_description_modal_label": "Show confirmation dialog before sending a post without media descriptions", + "preferences.fields.missing_description_modal_label": "发帖中的媒体没有文字说明时提示", "preferences.fields.privacy_label": "默认可见范围", "preferences.fields.reduce_motion_label": "减少过渡动画效果", "preferences.fields.system_font_label": "使用系统默认字体", - "preferences.fields.underline_links_label": "Always underline links in posts", + "preferences.fields.underline_links_label": "超链接总是加下划线显示", "preferences.fields.unfollow_modal_label": "取消关注前询问我", "preferences.hints.content_type_markdown": "警告,实验性功能!", "preferences.hints.demetricator": "隐藏所有互动数据,减少社交媒体的焦虑感。", - "preferences.hints.halloween": "不给糖就捣蛋!支持暗黑或明亮主题。", + "preferences.hints.halloween": "不给糖就捣蛋!支持暗色或明亮主题。", "preferences.hints.privacy_followers_only": "仅关注者可见。", + "preferences.hints.privacy_local": "仅本站用户可见。", "preferences.hints.privacy_public": "所有人可见,并出现在公共时间轴上。", "preferences.hints.privacy_unlisted": "所有人可见,但不出现在公共时间轴上。", "preferences.options.content_type_markdown": "Markdown", "preferences.options.content_type_plaintext": "纯文本", "preferences.options.privacy_followers_only": "仅关注者", + "preferences.options.privacy_local": "站内", "preferences.options.privacy_public": "公开", "preferences.options.privacy_unlisted": "不公开", - "privacy.change": "设置嘟文可见范围", + "privacy.change": "设置帖文可见范围", "privacy.direct.long": "只有被提及的用户能看到。", "privacy.direct.short": "私信", + "privacy.local.long": "不发送到联邦宇宙,只有站内用户能看到。", + "privacy.local.short": "本站", "privacy.private.long": "只有关注你的用户能看到。", "privacy.private.short": "仅关注者", "privacy.public.long": "所有人可见,并会出现在公共时间轴上。", "privacy.public.short": "公开", "privacy.unlisted.long": "所有人可见,但不会出现在公共时间轴上。", "privacy.unlisted.short": "不公开", - "profile_dropdown.add_account": "添加一个已有账号", + "profile_dropdown.add_account": "添加一个已有帐号", "profile_dropdown.logout": "登出 @{acct}", - "public.column_settings.title": "Fediverse timeline settings", + "public.column_settings.title": "跨站公共时间轴设置", "regeneration_indicator.label": "加载中……", "regeneration_indicator.sublabel": "你的主页时间轴正在准备中!", - "register_invite.lead": "Complete the form below to create an account.", - "register_invite.title": "You've been invited to join {siteTitle}!", + "register_invite.lead": "填写以下表单以创建帐号", + "register_invite.title": "你已被邀请加入 {siteTitle}!", "registration.agreement": "我同意本站用户条款 {tos}。", "registration.captcha.hint": "点击图像以重新加载验证码。", "registration.closed_message": "{instance} 不再接受新的用户注册。", - "registration.closed_title": "Registrations 停止注册", + "registration.closed_title": "暂停注册", "registration.confirmation_modal.close": "关闭", "registration.fields.confirm_placeholder": "请再输入密码", "registration.fields.email_placeholder": "邮箱地址", "registration.fields.password_placeholder": "密码", "registration.fields.username_hint": "只可以使用字母、数字、下划线。", "registration.fields.username_placeholder": "用户名", - "registration.lead": "有 {instance} 的账号后,你可以关注联邦宇宙上的用户。", - "registration.newsletter": "Subscribe to newsletter.", + "registration.lead": "有 {instance} 的帐号后,你可以关注联邦宇宙上的用户。", + "registration.newsletter": "订阅新闻邮件", + "registration.password_mismatch": "密码不匹配", "registration.reason": "请填写注册理由", - "registration.reason_hint": "这会帮助我们审核你的账号", + "registration.reason_hint": "这会帮助我们审核你的帐号", "registration.sign_up": "注册", "registration.tos": "用户条款", "relative_time.days": "{number}天", @@ -697,50 +723,46 @@ "relative_time.just_now": "刚刚", "relative_time.minutes": "{number}分", "relative_time.seconds": "{number}秒", - "remote_instance.edit_federation": "Edit federation", - "remote_instance.federation_panel.heading": "Federation Restrictions", - "remote_instance.federation_panel.no_restrictions_message": "{siteTitle} has placed no restrictions on {host}.", - "remote_instance.federation_panel.restricted_message": "{siteTitle} blocks all activities from {host}.", - "remote_instance.federation_panel.some_restrictions_message": "{siteTitle} has placed some restrictions on {host}.", - "remote_instance.pin_host": "Pin {host}", - "remote_instance.unpin_host": "Unpin {host}", + "remote_instance.edit_federation": "编辑联邦设置", + "remote_instance.federation_panel.heading": "联邦站点限制", + "remote_instance.federation_panel.no_restrictions_message": "{siteTitle} 未对 {host} 设置限制。", + "remote_instance.federation_panel.restricted_message": "{siteTitle} 完全屏蔽了 {host} 。", + "remote_instance.federation_panel.some_restrictions_message": "{siteTitle} 部分限制了 {host} 。", + "remote_instance.pin_host": "收藏 {host}", + "remote_instance.unpin_host": "取消收藏 {host}", "remote_timeline.filter_message": "你在查看 {instance} 的时间轴。", "reply_indicator.cancel": "取消", - "report.block": "屏蔽账号 {target}", - "report.block_hint": "你是否也要屏蔽这个账号呢?", + "report.block": "屏蔽帐号 {target}", + "report.block_hint": "你是否也要屏蔽这个帐号呢?", "report.forward": "发送举报至 {target}", "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?", "report.hint": "举报将会发送给你所在服务器的监察员。你可以在下面填写举报该用户的理由:", "report.placeholder": "备注", "report.submit": "提交", "report.target": "举报 {target}", - "schedule.post_time": "Post Date/Time", - "schedule.remove": "Remove schedule", - "schedule_button.add_schedule": "Schedule post for later", - "schedule_button.remove_schedule": "Post immediately", - "scheduled_status.cancel": "Cancel", + "schedule.post_time": "发布日期与时间", + "schedule.remove": "取消发布", + "schedule_button.add_schedule": "定时发布", + "schedule_button.remove_schedule": "立即发布", + "scheduled_status.cancel": "取消", + "search.action": "搜索 “{query}”", "search.placeholder": "搜索", - "search_popout.search_format": "高级搜索格式", - "search_popout.tips.full_text": "输入关键词检索所有你发送、收藏、转嘟过或提及到你的嘟文,以及其他用户公开的用户名、昵称和话题标签。", - "search_popout.tips.hashtag": "话题标签", - "search_popout.tips.status": "嘟文", - "search_popout.tips.user": "用户", "search_results.accounts": "用户", "search_results.hashtags": "话题标签", - "search_results.statuses": "嘟文", + "search_results.statuses": "帖文", "search_results.top": "结果", "security.codes.fail": "恢复代码错误", "security.confirm.fail": "密码错误,请重试。", - "security.delete_account.fail": "删除账号失败。.", - "security.delete_account.success": "账号删除成功。", + "security.delete_account.fail": "删除帐号失败。.", + "security.delete_account.success": "帐号删除成功。", "security.disable.fail": "密码错误,请重试。", "security.disable_mfa": "关闭", "security.fields.email.label": "邮箱地址", "security.fields.new_password.label": "输入新密码", "security.fields.old_password.label": "输入原密码", - "security.fields.password.label": "Password", + "security.fields.password.label": "密码", "security.fields.password_confirmation.label": "再次输入新密码", - "security.headers.delete": "删除账号", + "security.headers.delete": "删除帐号", "security.headers.tokens": "会话", "security.headers.update_email": "更改邮箱", "security.headers.update_password": "更改密码", @@ -750,8 +772,8 @@ "security.mfa_setup_hint": "通过OTP进行双重认证", "security.qr.fail": "加载密钥失败", "security.submit": "保存更改", - "security.submit.delete": "删除账号", - "security.text.delete": "输入密码后,本站会立即删除你的账号,并且通知其他站点,但你的信息不会在其他站点上立即删除。", + "security.submit.delete": "删除帐号", + "security.text.delete": "输入密码后,本站会立即删除你的帐号,并且通知其他站点,但你的信息不会在其他站点上立即删除。", "security.tokens.revoke": "吊销", "security.update_email.fail": "更新邮箱地址失败。", "security.update_email.success": "邮箱地址已更新。", @@ -762,28 +784,28 @@ "soapbox_config.authenticated_profile_hint": "Users must be logged-in to view replies and media on user profiles.", "soapbox_config.authenticated_profile_label": "Profiles require authentication", "soapbox_config.copyright_footer.meta_fields.label_placeholder": "版权页底", - "soapbox_config.crypto_address.meta_fields.address_placeholder": "Address", + "soapbox_config.crypto_address.meta_fields.address_placeholder": "地址", "soapbox_config.crypto_address.meta_fields.note_placeholder": "Note (optional)", "soapbox_config.crypto_address.meta_fields.ticker_placeholder": "Ticker", "soapbox_config.crypto_donate_panel_limit.meta_fields.limit_placeholder": "Number of items to display in the crypto homepage widget", "soapbox_config.custom_css.meta_fields.url_placeholder": "URL", - "soapbox_config.display_fqn_label": "显示本站账号的域名(如@user@domain)。", + "soapbox_config.display_fqn_label": "显示本站帐号的域名(如@user@domain)。", "soapbox_config.fields.brand_color_label": "主题颜色", - "soapbox_config.fields.crypto_address.add": "Add new crypto address", - "soapbox_config.fields.crypto_addresses_label": "Cryptocurrency addresses", + "soapbox_config.fields.crypto_address.add": "添加加密币地址", + "soapbox_config.fields.crypto_addresses_label": "加密币地址", "soapbox_config.fields.home_footer.add": "添加主页页底", "soapbox_config.fields.home_footer_fields_label": "主页页底", "soapbox_config.fields.logo_label": "Logo", "soapbox_config.fields.promo_panel.add": "添加时间轴页底", "soapbox_config.fields.promo_panel_fields_label": "时间轴页底", "soapbox_config.fields.theme_label": "默认主题", - "soapbox_config.greentext_label": "Enable greentext support", + "soapbox_config.greentext_label": "打开greentext支持", "soapbox_config.hints.crypto_addresses": "Add cryptocurrency addresses so users of your site can donate to you. Order matters, and you must use lowercase ticker values.", "soapbox_config.hints.home_footer_fields": "你可以将自定义的链接插入在未登录时显示的主页页底(如about)。", "soapbox_config.hints.logo": "SVG。最多2MB。将被显示为50px高度,保持长宽比。", "soapbox_config.hints.promo_panel_fields": "你可以将自定义的链接插入在时间轴右方或页底(如about)。", "soapbox_config.hints.promo_panel_icons": "{ link }", - "soapbox_config.hints.promo_panel_icons.link": "Soapbox Icons List", + "soapbox_config.hints.promo_panel_icons.link": "Soapbox图标列表", "soapbox_config.home_footer.meta_fields.label_placeholder": "标签", "soapbox_config.home_footer.meta_fields.url_placeholder": "URL", "soapbox_config.promo_panel.meta_fields.icon_placeholder": "图标", @@ -792,22 +814,22 @@ "soapbox_config.raw_json_hint": "直接编辑JSON数据。将覆盖此页所有设定。单击以应用更改。", "soapbox_config.raw_json_label": "高级:编辑JSON数据", "soapbox_config.save": "保存更改", - "soapbox_config.saved": "Soapbox config saved!", + "soapbox_config.saved": "Soapbox配置已保存", "soapbox_config.verified_can_edit_name_label": "允许经过验证的用户编辑他们自己的昵称。", "status.admin_account": "打开 @{name} 的管理界面", - "status.admin_status": "打开这条嘟文的管理界面", + "status.admin_status": "打开这条帖文的管理界面", "status.block": "屏蔽 @{name}", - "status.bookmark": "Bookmark", - "status.bookmarked": "Bookmark added.", - "status.cancel_reblog_private": "取消转嘟", - "status.cannot_reblog": "这条嘟文不允许被转嘟。", - "status.chat": "Chat with @{name}", - "status.copy": "复制嘟文链接", + "status.bookmark": "书签", + "status.bookmarked": "书签已添加。", + "status.cancel_reblog_private": "取消转发", + "status.cannot_reblog": "这条帖文不允许被转发。", + "status.chat": "与 @{name} 聊天", + "status.copy": "复制帖文链接", "status.delete": "删除", "status.detailed_status": "对话详情", "status.direct": "发送私信给 @{name}", "status.embed": "嵌入", - "status.favourite": "收藏", + "status.favourite": "点赞", "status.filtered": "已过滤", "status.load_more": "加载更多", "status.media_hidden": "隐藏媒体内容", @@ -815,25 +837,25 @@ "status.more": "更多", "status.mute": "隐藏 @{name}", "status.mute_conversation": "隐藏此对话", - "status.open": "展开嘟文", + "status.open": "展开帖文", "status.pin": "在个人资料页面置顶", - "status.pinned": "置顶嘟文", + "status.pinned": "置顶帖文", "status.reactions.cry": "Sad", - "status.reactions.empty": "No one has reacted to this post yet. When someone does, they will show up here.", + "status.reactions.empty": "尚未有人回应表情", "status.reactions.heart": "Love", "status.reactions.laughing": "Haha", "status.reactions.like": "Like", "status.reactions.open_mouth": "Wow", "status.reactions.weary": "Weary", - "status.reactions_expand": "Select emoji", + "status.reactions_expand": "选择表情", "status.read_more": "阅读全文", - "status.reblog": "转嘟", - "status.reblog_private": "转嘟(可见者不变)", - "status.reblogged_by": "{name} 转嘟了", - "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", + "status.reblog": "转发", + "status.reblog_private": "转发(可见范围不变)", + "status.reblogged_by": "{name} 转发了", + "status.reblogs.empty": "没有人转发过此条帖文。如果有人转发了,就会显示在这里。", "status.redraft": "删除并重新编辑", - "status.remove_account_from_group": "移除出列表", - "status.remove_post_from_group": "移除出列表", + "status.remove_account_from_group": "将帐号移出群组", + "status.remove_post_from_group": "将帖文移出群组", "status.reply": "回复", "status.replyAll": "回复所有人", "status.report": "举报 @{name}", @@ -844,49 +866,50 @@ "status.show_more": "显示内容", "status.show_more_all": "显示所有内容", "status.show_thread": "显示全部对话", - "status.title": "Post", - "status.title_direct": "Direct message", + "status.title": "帖文", + "status.title_direct": "私信", "status.unbookmark": "移除书签", - "status.unbookmarked": "Bookmark removed.", + "status.unbookmarked": "书签已移除。", "status.unmute_conversation": "不再隐藏此对话", "status.unpin": "在个人资料页面取消置顶", - "status_list.queue_label": "点击以查看 {count} 新的 {count, plural, one {嘟文} other {嘟文}}", - "statuses.tombstone": "One or more posts is unavailable.", + "status_list.queue_label": "点击查看 {count} 则新{count, plural, one {帖文} other {帖文}}", + "statuses.tombstone": "部分帖文不可见", "suggestions.dismiss": "关闭建议", - "tabs_bar.all": "All", + "tabs_bar.all": "全部", "tabs_bar.apps": "应用", - "tabs_bar.chats": "私信", - "tabs_bar.dashboard": "仪表板", - "tabs_bar.fediverse": "Fediverse", - "tabs_bar.header": "Account Info", + "tabs_bar.chats": "聊天", + "tabs_bar.dashboard": "管理中心", + "tabs_bar.fediverse": "联邦宇宙", + "tabs_bar.header": "帐号信息", "tabs_bar.home": "主页", + "tabs_bar.local": "本站", "tabs_bar.news": "新闻", "tabs_bar.notifications": "通知", - "tabs_bar.post": "新嘟文", + "tabs_bar.post": "发帖", "tabs_bar.search": "搜索", - "tabs_bar.theme_toggle_dark": "切换到暗黑主题", + "tabs_bar.theme_toggle_dark": "切换到暗色主题", "tabs_bar.theme_toggle_light": "切换到明亮主题", - "time_remaining.days": "剩余 {number, plural, one {# 天} other {# 天}}", - "time_remaining.hours": "剩余 {number, plural, one {# 小时} other {# 小时}}", - "time_remaining.minutes": "剩余 {number, plural, one {# 分钟} other {# 分钟}}", - "time_remaining.moments": "即将结束", - "time_remaining.seconds": "剩余 {number, plural, one {# 秒} other {# 秒}}", + "time_remaining.days": "离预定时间还有 {number, plural, one {# 天} other {# 天}}", + "time_remaining.hours": "离预定时间还有 {number, plural, one {# 小时} other {# 小时}}", + "time_remaining.minutes": "离预定时间还有 {number, plural, one {# 分钟} other {# 分钟}}", + "time_remaining.moments": "即将到达预定时间", + "time_remaining.seconds": "离预定时间还有 {number, plural, one {# 秒} other {# 秒}}", "trends.count_by_accounts": "{count} 人正在讨论", "trends.title": "热门", - "ui.beforeunload": "如果你现在离开Pleroma,你的草稿内容将会丢失。", + "ui.beforeunload": "如果你现在离开网站,你的草稿内容将会丢失。", "unauthorized_modal.footer": "已经有帐号了吗? {login}.", - "unauthorized_modal.text": "你需要账号才能继续", - "unauthorized_modal.title": "注册账号 {site_title}", + "unauthorized_modal.text": "你需要帐号才能继续", + "unauthorized_modal.title": "注册帐号 {site_title}", "upload_area.title": "将文件拖放到此处开始上传", "upload_button.label": "上传媒体文件 (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_error.limit": "文件大小超过限制。", "upload_error.poll": "投票中不允许上传文件。", "upload_form.description": "为视觉障碍人士添加文字说明", - "upload_form.preview": "Preview", + "upload_form.preview": "预览", "upload_form.undo": "删除", "upload_progress.label": "上传中……", "video.close": "关闭视频", - "video.download": "Download file", + "video.download": "下载", "video.exit_fullscreen": "退出全屏", "video.expand": "展开视频", "video.fullscreen": "全屏", diff --git a/app/soapbox/pages/default_page.js b/app/soapbox/pages/default_page.js index 9e5c7a2ab0..2e75203575 100644 Binary files a/app/soapbox/pages/default_page.js and b/app/soapbox/pages/default_page.js differ diff --git a/app/soapbox/pages/home_page.js b/app/soapbox/pages/home_page.js index 882e989392..96493e5ac6 100644 Binary files a/app/soapbox/pages/home_page.js and b/app/soapbox/pages/home_page.js differ diff --git a/app/soapbox/pages/profile_page.js b/app/soapbox/pages/profile_page.js index ae09b4c2c2..1f4bdbc490 100644 Binary files a/app/soapbox/pages/profile_page.js and b/app/soapbox/pages/profile_page.js differ diff --git a/app/soapbox/pages/status_page.js b/app/soapbox/pages/status_page.js index db70dcee6d..c20ea91d3a 100644 Binary files a/app/soapbox/pages/status_page.js and b/app/soapbox/pages/status_page.js differ diff --git a/app/soapbox/reducers/__tests__/media_attachments-test.js b/app/soapbox/reducers/__tests__/media_attachments-test.js deleted file mode 100644 index f55d56d395..0000000000 Binary files a/app/soapbox/reducers/__tests__/media_attachments-test.js and /dev/null differ diff --git a/app/soapbox/reducers/__tests__/notifications-test.js b/app/soapbox/reducers/__tests__/notifications-test.js index 581c4b38e6..dbaeff40af 100644 Binary files a/app/soapbox/reducers/__tests__/notifications-test.js and b/app/soapbox/reducers/__tests__/notifications-test.js differ diff --git a/app/soapbox/reducers/__tests__/push_notifications-test.js b/app/soapbox/reducers/__tests__/push_notifications-test.js index 97e75df547..8a7b639259 100644 Binary files a/app/soapbox/reducers/__tests__/push_notifications-test.js and b/app/soapbox/reducers/__tests__/push_notifications-test.js differ diff --git a/app/soapbox/reducers/__tests__/search-test.js b/app/soapbox/reducers/__tests__/search-test.js index 73d3186a31..6a872ab077 100644 Binary files a/app/soapbox/reducers/__tests__/search-test.js and b/app/soapbox/reducers/__tests__/search-test.js differ diff --git a/app/soapbox/reducers/__tests__/statuses-test.js b/app/soapbox/reducers/__tests__/statuses-test.js index 00687224a1..7bcc67c9e8 100644 Binary files a/app/soapbox/reducers/__tests__/statuses-test.js and b/app/soapbox/reducers/__tests__/statuses-test.js differ diff --git a/app/soapbox/reducers/accounts.js b/app/soapbox/reducers/accounts.js index fb0ac3ca68..5b7cdd8040 100644 Binary files a/app/soapbox/reducers/accounts.js and b/app/soapbox/reducers/accounts.js differ diff --git a/app/soapbox/reducers/chat_message_lists.js b/app/soapbox/reducers/chat_message_lists.js index 777eddb196..43f40270d8 100644 Binary files a/app/soapbox/reducers/chat_message_lists.js and b/app/soapbox/reducers/chat_message_lists.js differ diff --git a/app/soapbox/reducers/chat_messages.js b/app/soapbox/reducers/chat_messages.js index 568725da33..e887f9ed4c 100644 Binary files a/app/soapbox/reducers/chat_messages.js and b/app/soapbox/reducers/chat_messages.js differ diff --git a/app/soapbox/reducers/chats.js b/app/soapbox/reducers/chats.js index 56c2c4678d..e67c21d123 100644 Binary files a/app/soapbox/reducers/chats.js and b/app/soapbox/reducers/chats.js differ diff --git a/app/soapbox/reducers/compose.js b/app/soapbox/reducers/compose.js index 344dad6c14..a9b4e4bed8 100644 Binary files a/app/soapbox/reducers/compose.js and b/app/soapbox/reducers/compose.js differ diff --git a/app/soapbox/reducers/contexts.js b/app/soapbox/reducers/contexts.js index 9bcf87b9a6..d6780c124c 100644 Binary files a/app/soapbox/reducers/contexts.js and b/app/soapbox/reducers/contexts.js differ diff --git a/app/soapbox/reducers/index.js b/app/soapbox/reducers/index.js index d2c4b36ff8..d438b32eb6 100644 Binary files a/app/soapbox/reducers/index.js and b/app/soapbox/reducers/index.js differ diff --git a/app/soapbox/reducers/media_attachments.js b/app/soapbox/reducers/media_attachments.js deleted file mode 100644 index 19400705a2..0000000000 Binary files a/app/soapbox/reducers/media_attachments.js and /dev/null differ diff --git a/app/soapbox/reducers/notifications.js b/app/soapbox/reducers/notifications.js index c4b4e82ebf..56e1bd7c24 100644 Binary files a/app/soapbox/reducers/notifications.js and b/app/soapbox/reducers/notifications.js differ diff --git a/app/soapbox/reducers/push_notifications.js b/app/soapbox/reducers/push_notifications.js index e729529346..a1cc316995 100644 Binary files a/app/soapbox/reducers/push_notifications.js and b/app/soapbox/reducers/push_notifications.js differ diff --git a/app/soapbox/reducers/search.js b/app/soapbox/reducers/search.js index d4c3f1a59a..80a4bc9c83 100644 Binary files a/app/soapbox/reducers/search.js and b/app/soapbox/reducers/search.js differ diff --git a/app/soapbox/reducers/soapbox.js b/app/soapbox/reducers/soapbox.js index 60e3397867..c1ab95d3e9 100644 Binary files a/app/soapbox/reducers/soapbox.js and b/app/soapbox/reducers/soapbox.js differ diff --git a/app/soapbox/reducers/statuses.js b/app/soapbox/reducers/statuses.js index f8c01ed2b1..6f92153372 100644 Binary files a/app/soapbox/reducers/statuses.js and b/app/soapbox/reducers/statuses.js differ diff --git a/app/soapbox/reducers/timelines.js b/app/soapbox/reducers/timelines.js index 058a40b70d..616152248f 100644 Binary files a/app/soapbox/reducers/timelines.js and b/app/soapbox/reducers/timelines.js differ diff --git a/app/soapbox/reducers/user_lists.js b/app/soapbox/reducers/user_lists.js index f0d80de778..aa63c917c8 100644 Binary files a/app/soapbox/reducers/user_lists.js and b/app/soapbox/reducers/user_lists.js differ diff --git a/app/soapbox/selectors/index.js b/app/soapbox/selectors/index.js index 9594a57501..3f182c222b 100644 Binary files a/app/soapbox/selectors/index.js and b/app/soapbox/selectors/index.js differ diff --git a/app/soapbox/utils/auth.js b/app/soapbox/utils/auth.js index c697578a15..0d0c6c321a 100644 Binary files a/app/soapbox/utils/auth.js and b/app/soapbox/utils/auth.js differ diff --git a/app/soapbox/utils/features.js b/app/soapbox/utils/features.js index 058eeec5be..ddab89c73b 100644 Binary files a/app/soapbox/utils/features.js and b/app/soapbox/utils/features.js differ diff --git a/app/soapbox/utils/instance.js b/app/soapbox/utils/instance.js new file mode 100644 index 0000000000..af9d69665d Binary files /dev/null and b/app/soapbox/utils/instance.js differ diff --git a/app/soapbox/utils/numbers.js b/app/soapbox/utils/numbers.js index 434473b402..8191692b33 100644 Binary files a/app/soapbox/utils/numbers.js and b/app/soapbox/utils/numbers.js differ diff --git a/app/soapbox/utils/resize_image.js b/app/soapbox/utils/resize_image.js index d801cc200a..f6a4ca34c9 100644 Binary files a/app/soapbox/utils/resize_image.js and b/app/soapbox/utils/resize_image.js differ diff --git a/app/soapbox/utils/status.js b/app/soapbox/utils/status.js new file mode 100644 index 0000000000..48554ced91 Binary files /dev/null and b/app/soapbox/utils/status.js differ diff --git a/app/styles/about.scss b/app/styles/about.scss index 53a20ac9d5..af281ff00a 100644 --- a/app/styles/about.scss +++ b/app/styles/about.scss @@ -97,6 +97,7 @@ $fluid-breakpoint: $maximum-width + 20px; } .input { + flex: 1; margin-bottom: 0; margin-right: 10px; @@ -690,6 +691,11 @@ $fluid-breakpoint: $maximum-width + 20px; .otp-form-overlay__close { align-self: flex-end; + + .svg-icon { + height: 20px; + width: 20px; + } } } } diff --git a/app/styles/accounts.scss b/app/styles/accounts.scss index 5c61002f6b..92a08ac2de 100644 --- a/app/styles/accounts.scss +++ b/app/styles/accounts.scss @@ -456,6 +456,11 @@ a .account__avatar { display: flex; flex-direction: row; padding: 10px 0; + + &__button .svg-icon { + height: 20px; + width: 20px; + } } .account__section-headline { diff --git a/app/styles/application.scss b/app/styles/application.scss index e8f0542026..2918173a9f 100644 --- a/app/styles/application.scss +++ b/app/styles/application.scss @@ -50,6 +50,7 @@ @import 'components/emoji-reacts'; @import 'components/status'; @import 'components/reply-indicator'; +@import 'components/reply-mentions'; @import 'components/detailed-status'; @import 'components/list-forms'; @import 'components/media-gallery'; @@ -91,6 +92,8 @@ @import 'components/profile-stats'; @import 'components/progress-circle'; @import 'components/register-invite'; +@import 'components/radio-button'; +@import 'components/directory'; // Holiday @import 'holiday/halloween'; diff --git a/app/styles/autosuggest.scss b/app/styles/autosuggest.scss index ea322e233d..33a8f062d5 100644 --- a/app/styles/autosuggest.scss +++ b/app/styles/autosuggest.scss @@ -102,3 +102,23 @@ .autosuggest-account .display-name__account { color: var(--primary-text-color--faint); } + +.autosuggest-input__action { + display: flex; + align-items: center; + padding: 10px; + border-radius: 4px; + font-weight: bold; + text-decoration: none; + color: var(--primary-text-color--faint); + + &:hover, + &.selected { + background-color: var(--brand-color--med); + } + + .svg-icon { + margin-right: 8px; + transform: translateY(-1px); + } +} diff --git a/app/styles/chats.scss b/app/styles/chats.scss index 9266a43e57..0defcb5910 100644 --- a/app/styles/chats.scss +++ b/app/styles/chats.scss @@ -9,7 +9,7 @@ max-height: calc(100vh - 70px); display: flex; flex-direction: column; - z-index: 999; + z-index: 1000; // Above AccountHeader transition: 0.05s; &--main { @@ -26,11 +26,16 @@ .search--account { border-top: 1px solid hsla(var(--primary-text-color_hsl), 0.2); + padding: 5px; .autosuggest-textarea__suggestions { top: auto; bottom: 100%; } + + input.search__input { + border-radius: 6px; + } } &__header { @@ -111,6 +116,10 @@ flex-direction: column; overflow: hidden; } + + .chat-list { + overflow-y: auto; + } } .audio-toggle .react-toggle-thumb { @@ -205,16 +214,22 @@ position: absolute; top: -8px; right: -8px; + height: 20px; + padding: 1px; background: var(--background-color); border-radius: 999px; opacity: 0; pointer-events: none; transition: 0.2s; + + .svg-icon { + height: 20px; + width: 20px; + } } } .chat-list { - overflow-y: auto; flex: 1; &__content { @@ -228,6 +243,10 @@ align-items: start; } + .account { + border-bottom: none; + } + .account__display-name { position: relative; @@ -450,6 +469,10 @@ } .chat { + &__attachment-icon { + float: right; + } + &__last-message { display: block; overflow: hidden; @@ -459,6 +482,10 @@ a { color: var(--highlight-text-color); } + + &.attachment { + font-style: italic; + } } } diff --git a/app/styles/components/account-header.scss b/app/styles/components/account-header.scss index b09ec1c659..9e3a6951b2 100644 --- a/app/styles/components/account-header.scss +++ b/app/styles/components/account-header.scss @@ -210,6 +210,13 @@ .svg-icon { width: 20px; height: 20px; + + svg { + &.feather { + // Feather icons are a little larger + transform: scale(0.9); + } + } } } diff --git a/app/styles/components/admin.scss b/app/styles/components/admin.scss index baa326e234..88a34b05cf 100644 --- a/app/styles/components/admin.scss +++ b/app/styles/components/admin.scss @@ -30,6 +30,7 @@ } &__num, + &__icon, &__text { text-align: center; font-weight: 500; @@ -39,6 +40,20 @@ margin-bottom: 10px; } + &__icon { + display: flex; + justify-content: center; + + .svg-icon { + width: 48px; + height: 48px; + + svg { + stroke-width: 1px; + } + } + } + &__label { font-size: 14px; color: hsla(var(--primary-text-color_hsl), 0.6); @@ -87,10 +102,12 @@ margin-left: auto; display: flex; flex-wrap: nowrap; + column-gap: 10px; padding-left: 20px; - button.icon-button:nth-child(n+2) { - padding-left: 10px; + .svg-icon { + height: 24px; + width: 24px; } } } @@ -112,7 +129,7 @@ display: block; width: 100%; max-width: 600px; - padding: 20px 20px 0; + padding: 10px 0; box-sizing: border-box; .columns-area__panels__pane__inner { @@ -168,8 +185,10 @@ } &__actions { - margin-left: auto; display: flex; + align-items: center; + height: fit-content; + margin-left: auto; .icon-button { padding-left: 10px; @@ -178,6 +197,11 @@ display: flex; align-items: center; justify-content: center; + + > .svg-icon { + height: 20px; + width: 20px; + } } } } diff --git a/app/styles/components/aliases.scss b/app/styles/components/aliases.scss index a9888a85bd..b5906289db 100644 --- a/app/styles/components/aliases.scss +++ b/app/styles/components/aliases.scss @@ -18,24 +18,21 @@ } } - &_search { + &_search.search { display: flex; + align-items: center; flex-direction: row; - margin: 10px; + border-bottom: none; .search__input { padding: 7px 30px 6px 10px; + background: none; } > label { flex: 1 1; } - > .search__icon .fa { - top: 8px; - right: 102px !important; - } - > .button { width: 80px; margin-left: 10px; diff --git a/app/styles/components/buttons.scss b/app/styles/components/buttons.scss index b0f6dd3082..51157bf31d 100644 --- a/app/styles/components/buttons.scss +++ b/app/styles/components/buttons.scss @@ -159,7 +159,7 @@ a.button { justify-content: center; .svg-icon { - margin-left: 6px; + margin: 0 0 0 6px; width: 20px; height: 20px; } diff --git a/app/styles/components/columns.scss b/app/styles/components/columns.scss index 36b172599f..6670d41ea5 100644 --- a/app/styles/components/columns.scss +++ b/app/styles/components/columns.scss @@ -99,6 +99,10 @@ margin: 0 auto; padding-top: 15px; + @media screen and (max-width: 580px) { + padding-top: 0; + } + .column { width: 100%; padding: 0; @@ -124,7 +128,7 @@ @media (max-width: 580px) { .timeline-compose-block { border-radius: 0; - margin-top: -5px; + margin-top: 10px; } } @@ -282,7 +286,8 @@ .column-link { background: var(--brand-color--med); color: var(--primary-text-color); - display: block; + display: flex; + align-items: center; font-size: 16px; padding: 15px; text-decoration: none; @@ -314,7 +319,7 @@ } } -.column-link__icon { +.svg-icon.column-link__icon { display: inline-block; margin-right: 5px; } @@ -741,6 +746,15 @@ .column-settings__row { .text-btn { margin-bottom: 15px; + + &.column-header__setting-btn { + display: flex; + align-items: center; + + .svg-icon { + margin-right: 10px; + } + } } } @@ -810,12 +824,19 @@ } .timeline-filter-message { + display: flex; + align-items: center; background-color: var(--brand-color--faint); color: var(--primary-text-color); padding: 15px 20px; .icon-button { - margin-right: 8px; + margin: 2px 8px 2px 0; + + .svg-icon { + height: 20px; + width: 20px; + } } } @@ -930,10 +951,21 @@ } // Make MaterialStatus flush against SubNavigation -.sub-navigation ~ .slist .item-list > article:first-child .material-status__status, -.sub-navigation ~ .material-status:not(.material-status + .material-status) .material-status__status { - border-top-left-radius: 0; - border-top-right-radius: 0; +.sub-navigation ~, +.sub-navigation ~ .ptr > .ptr__children > { + // ScrollableList + .slist .item-list > article:first-child, + // ScrollableList placeholders + .slist .item-list .slist__placeholder:first-child > .material-status:first-child, + .slist.slist--flex .item-list > .material-status:first-child, + // Thread + .material-status:not(.material-status + .material-status) { + // MaterialStatus + .material-status__status { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + } } // Display background for loading indicator @@ -959,3 +991,24 @@ .sub-navigation + .account__section-headline { background: var(--foreground-color); } + +// Pull to refresh +.columns-area .column { + .ptr, + .ptr__children { + background: var(--foreground-color); + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + + @media screen and (max-width: 580px) { + border-radius: 0; + } + } + + &--transparent { + .ptr, + .ptr__children { + background: transparent; + } + } +} diff --git a/app/styles/components/datepicker.scss b/app/styles/components/datepicker.scss index 78a20b01f4..76996ffdaa 100644 --- a/app/styles/components/datepicker.scss +++ b/app/styles/components/datepicker.scss @@ -19,6 +19,11 @@ &__cancel { padding-left: 10px; + + .svg-icon { + height: 24px; + width: 24px; + } } &--error .react-datepicker__input-container { @@ -64,14 +69,14 @@ } input { - padding: 0 0 0 10px; + padding: 0 0 0 8px; } &::before { content: '\f073'; display: inline-block; - font: normal normal normal 14px/1 ForkAwesome; - font-size: 14px; + font: normal normal normal 14px/1 "Font Awesome 5 Free"; + font-size: 18px; color: var(--primary-text-color--faint); } } diff --git a/app/styles/components/detailed-status.scss b/app/styles/components/detailed-status.scss index 3189b6e609..c6fcaa747c 100644 --- a/app/styles/components/detailed-status.scss +++ b/app/styles/components/detailed-status.scss @@ -185,17 +185,29 @@ } } - &__descendants .thread__status:first-child { + &__descendants &__status:first-child { margin-top: 10px; + + .status__wrapper--filtered { + margin-top: -10px; + } } &__status--focused:first-child, &__ancestors &__status:first-child { margin-top: 10px; + + .status__wrapper--filtered { + margin-top: -10px; + } } &__descendants &__status:last-child { margin-bottom: 10px; + + .status__wrapper--filtered { + margin-bottom: -10px; + } } &__connector { @@ -221,3 +233,17 @@ } } } + +.thread { + .ptr, + .ptr__children { + background: var(--foreground-color) !important; + border-radius: 10px; + border-top-left-radius: 0; + border-top-right-radius: 0; + + @media screen and (max-width: 580px) { + border-radius: 0; + } + } +} diff --git a/app/styles/components/directory.scss b/app/styles/components/directory.scss new file mode 100644 index 0000000000..62f6c71727 --- /dev/null +++ b/app/styles/components/directory.scss @@ -0,0 +1,175 @@ +.directory { + &__filter-form { + display: flex; + background: var(--foreground-color); + + &__column { + padding: 10px 15px; + } + + .radio-button { + display: block; + } + } + + &__list { + display: grid; + grid-gap: 10px; + grid-template-columns: minmax(0, 50%) minmax(0, 50%); + width: 100%; + padding: 10px; + transition: opacity 100ms ease-in; + box-sizing: border-box; + + &.loading { + opacity: 0.7; + } + + @media screen and (max-width: 630px) { + grid-template-columns: minmax(0, 100%); + } + } + + &__card { + box-sizing: border-box; + margin-bottom: 0; + box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.1); + border-radius: 10px; + background: var(--foreground-color); + overflow: hidden; + position: relative; + + &__info { + z-index: 1; + position: absolute; + top: 10px; + left: 10px; + } + + &__action-button { + z-index: 1; + position: absolute; + top: 78px; + right: 12px; + } + + &__img { + height: 125px; + position: relative; + background: var(--brand-color--med); + + img { + display: block; + width: 100%; + height: 100%; + margin: 0; + object-fit: cover; + } + } + + &__bar { + display: flex; + align-items: center; + background: var(--brand-color--med); + padding: 10px; + + &__name { + flex: 1 1 auto; + display: flex; + align-items: center; + text-decoration: none; + overflow: hidden; + } + + .account__avatar { + flex: 0 0 auto; + width: 48px; + min-width: 48px; + height: 48px; + padding-top: 2px; + + img { + width: 100%; + height: 100%; + display: block; + margin: 0; + border-radius: 4px; + background: var(--brand-color--faint); + object-fit: cover; + } + } + + .display-name { + margin-left: 15px; + text-align: left; + + strong { + font-size: 15px; + color: var(--primary-text-color); + font-weight: 500; + overflow: hidden; + text-overflow: ellipsis; + } + + span:not(.verified-icon) { + display: block; + font-size: 14px; + color: var(--primary-text-color--faint); + font-weight: 400; + overflow: hidden; + text-overflow: ellipsis; + } + } + } + + &__extra { + background: var(--foreground-color); + display: flex; + align-items: center; + justify-content: center; + + .accounts-table__count { + padding: 15px 0; + text-align: center; + font-size: 15px; + font-weight: 500; + width: 33.33%; + flex: 0 0 auto; + + small { + display: block; + color: var(--primary-text-color--faint); + font-weight: 400; + font-size: 14px; + } + } + + .account__header__content { + box-sizing: border-box; + padding: 15px 10px; + border-bottom: 1px solid var(--brand-color--med); + width: 100%; + min-height: 50px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + &.empty { + border-color: transparent; + } + + p { + display: none; + + &:first-child { + display: inline; + } + } + + br { + display: none; + } + } + } + } +} diff --git a/app/styles/components/dropdown-menu.scss b/app/styles/components/dropdown-menu.scss index 93c0d3bdc5..66d5832c5b 100644 --- a/app/styles/components/dropdown-menu.scss +++ b/app/styles/components/dropdown-menu.scss @@ -9,7 +9,7 @@ padding: 4px 0; color: var(--primary-text-color); box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.5); - max-width: 300px; + max-width: 350px; &.left { transform-origin: 100% 50%; } &.top { transform-origin: 50% 100%; } &.bottom { transform-origin: 50% 0; } @@ -52,27 +52,59 @@ ul { overflow: hidden; - padding: 6px 0; + padding: 2px 0; } - &__item a { - display: block; - box-sizing: border-box; - overflow: hidden; - padding: 3px 10px 1px; - text-decoration: none; - text-overflow: ellipsis; - white-space: nowrap; - color: var(--primary-text-color); + &__item { + a { + display: flex; + align-items: center; + box-sizing: border-box; + overflow: hidden; + margin: 0 6px; + padding: 4px 4px; + border-radius: 6px; + font-size: 15px; + text-decoration: none; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--primary-text-color); + } - &:focus, - &:hover, - &:active { - outline: 0; - color: #fff; - background: var(--brand-color) !important; + a { + &:focus, + &:hover, + &:active { + outline: 0; + color: #fff; + background: var(--brand-color); - * { + * { + color: #fff; + } + } + + .svg-icon:first-child { + height: 20px; + width: 20px; + min-width: 20px; + margin-right: 10px; + transition: none; + + svg { + stroke-width: 1.5; + transition: none; + } + } + } + + &.destructive a { + color: var(--warning-color--hicontrast); + + &:focus, + &:hover, + &:active { + background: var(--warning-color); color: #fff; } } @@ -82,7 +114,7 @@ display: block; margin: 10px !important; height: 1px; - background: var(--foreground-color); + background: hsla(var(--primary-text-color_hsl), 0.12); } &__item .account { diff --git a/app/styles/components/federation-restrictions.scss b/app/styles/components/federation-restrictions.scss index 72dacc118b..1b60e01cb3 100644 --- a/app/styles/components/federation-restrictions.scss +++ b/app/styles/components/federation-restrictions.scss @@ -20,6 +20,10 @@ &__icon { width: 16px; + + .svg-icon svg { + stroke-width: 1.3; + } } &--expanded &__icon i.fa { diff --git a/app/styles/components/filters.scss b/app/styles/components/filters.scss index ccdc030d7f..93ebd230b1 100644 --- a/app/styles/components/filters.scss +++ b/app/styles/components/filters.scss @@ -97,4 +97,8 @@ } } } + + .simple_form select { + margin-top: 0; + } } diff --git a/app/styles/components/icon.scss b/app/styles/components/icon.scss index 3514ab03a9..b49c5412ec 100644 --- a/app/styles/components/icon.scss +++ b/app/styles/components/icon.scss @@ -18,7 +18,8 @@ fill: currentColor; } - svg.icon-tabler-search { + svg.icon-tabler-search, + svg.icon-tabler-code { stroke-width: 2.3px; } diff --git a/app/styles/components/list-forms.scss b/app/styles/components/list-forms.scss index 0212ebd1f8..354d170ec2 100644 --- a/app/styles/components/list-forms.scss +++ b/app/styles/components/list-forms.scss @@ -14,6 +14,10 @@ border-radius: 8px 8px 0 0; } + &__content { + padding: 0; + } + &__accounts { background: var(--background-color); overflow-y: auto; @@ -33,14 +37,14 @@ .search { display: flex; flex-direction: row; - margin: 10px 0; + margin: 10px; > label { flex: 1 1; } - > .search__icon .fa { - right: 102px !important; + > .search__icon { + position: relative; } > .button { diff --git a/app/styles/components/modal.scss b/app/styles/components/modal.scss index ca1bb16987..b39da75459 100644 --- a/app/styles/components/modal.scss +++ b/app/styles/components/modal.scss @@ -199,8 +199,15 @@ position: absolute; right: 8px; top: 8px; + height: 48px; + width: 48px; z-index: 100; color: #fff; + + .svg-icon { + height: 48px; + width: 48px; + } } .onboarding-modal, @@ -339,7 +346,7 @@ width: 480px; max-width: 90vw; border-radius: 10px; - border: 1px solid var(--primary-text-color--faint); + border: 1px solid var(--background-color); color: var(--primary-text-color--faint); background: var(--foreground-color); @@ -392,10 +399,10 @@ .confirmation-modal__action-bar, .mute-modal__action-bar { display: flex; + align-items: center; justify-content: space-between; background: var(--background-color); padding: 10px; - line-height: 36px; & > div { flex: 1 1 auto; @@ -543,8 +550,10 @@ } .actions-modal { - width: calc(100% - 72px); - margin: 35px; + max-height: calc(100% - 16px); + width: calc(100% - 16px); + max-width: 500px; + margin: auto 0 8px; .status { overflow-y: auto; @@ -565,24 +574,30 @@ li:not(:empty) { &:first-of-type { margin: 10px 0 0; } - &:last-of-type { margin: 0 0 10px; } a { display: flex; align-items: center; padding: 13px 10px 12px; - color: var(--primary-text-color--faint); + color: var(--primary-text-color); text-decoration: none; + opacity: 0.6; &, button { transition: none; } + &.destructive { + color: var(--warning-color--hicontrast); + opacity: 1; + } + &.active, &:hover, - &:active, &:focus { + opacity: 1; + &, button { background: var(--background-color); @@ -590,10 +605,38 @@ box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.5); } } - button:first-child { margin-right: 10px; } + + .svg-icon:first-child { + height: 20px; + width: 20px; + margin-right: 10px; + + svg { + stroke-width: 1.5; + + &.feather { + // Feather icons are a little larger + transform: scale(0.9); + } + } + } } } } + + &__close-button { + width: calc(100% - 16px); + margin: 8px; + background: var(--accent-color); + font-size: 15px; + font-weight: 600; + + &:active, + &:focus, + &:hover { + background: var(--accent-color--bright); + } + } } .confirmation-modal__action-bar, @@ -657,6 +700,14 @@ .media-modal__close { top: 19px; right: 15px; + height: 20px; + width: 20px; + + .svg-icon { + color: var(--primary-text-color); + height: 20px; + width: 20px; + } } } @@ -674,7 +725,8 @@ } } -.compose-modal { +.compose-modal, +.reply-mentions-modal { overflow: hidden; background-color: var(--background-color); border-radius: 6px; @@ -704,6 +756,15 @@ } } + @media screen and (max-width: 895px) { + margin: 0; + border-radius: 0; + height: 100vh; + width: 100vw; + } +} + +.compose-modal { &__close { position: absolute; right: 10px; @@ -757,12 +818,27 @@ padding: 10px 0; } } +} - @media screen and (max-width: 895px) { - margin: 0; - border-radius: 0; - height: 100vh; - width: 100vw; +.reply-mentions-modal { + &__back { + position: absolute; + left: 10px; + left: max(10px, env(safe-area-inset-right)); + color: var(--primary-text-color--faint); + + .svg-icon { + width: 24px; + height: 24px; + } + } + + &__accounts { + display: block; + flex-direction: row; + flex: 1; + overflow-y: auto; + min-height: 300px; } } @@ -809,6 +885,59 @@ } } +.remote-interaction-modal { + &__content { + display: flex; + flex-direction: column; + // align-items: center; + row-gap: 10px; + padding: 10px; + + .unauthorized-modal-content__button { + margin: 0 auto; + } + } + + &__fields { + display: flex; + flex-direction: column; + gap: 10px; + width: 100%; + + .button { + width: auto; + margin: 0; + text-transform: none; + overflow: unset; + } + } + + &__divider { + display: flex; + align-items: center; + gap: 10px; + margin: 0 -10px; + + &::before, + &::after { + content: ""; + flex: 1; + border-bottom: 1px solid hsla(var(--primary-text-color_hsl), 0.2); + } + } + + @media screen and (max-width: 895px) { + margin: 0; + border-radius: 6px; + height: unset !important; + width: 440px !important; + } + + @media screen and (max-width: 480px) { + width: 330px !important; + } +} + .focal-point-modal { max-width: 80vw; max-height: 80vh; diff --git a/app/styles/components/profile-info-panel.scss b/app/styles/components/profile-info-panel.scss index 2bee4e368f..99bf66c093 100644 --- a/app/styles/components/profile-info-panel.scss +++ b/app/styles/components/profile-info-panel.scss @@ -28,6 +28,7 @@ color: var(--primary-text-color--faint); align-items: center; line-height: normal; + margin-top: 15px; .svg-icon { width: 22px; @@ -84,9 +85,11 @@ display: block; flex: 1 1; color: var(--primary-text-color); - margin: 15px 0; + margin-top: 15px; font-size: 15px; line-height: 1.25; + overflow: hidden; + text-overflow: ellipsis; a { color: var(--highlight-text-color); @@ -100,10 +103,6 @@ padding: 10px 0; margin: 5px 0; - @media screen and (max-width: 895px) { - border-bottom: 1px solid var(--brand-color--med); - } - a { color: var(--highlight-text-color); } diff --git a/app/styles/components/radio-button.scss b/app/styles/components/radio-button.scss new file mode 100644 index 0000000000..d1a303f3f7 --- /dev/null +++ b/app/styles/components/radio-button.scss @@ -0,0 +1,35 @@ +.radio-button { + font-size: 14px; + position: relative; + display: inline-block; + padding: 6px 0; + line-height: 18px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; + + input[type=radio], + input[type=checkbox] { + display: none; + } + + &__input { + display: inline-block; + position: relative; + border: 1px solid var(--primary-text-color--faint); + box-sizing: border-box; + width: 18px; + height: 18px; + flex: 0 0 auto; + margin-right: 10px; + top: -1px; + border-radius: 50%; + vertical-align: middle; + + &.checked { + border-color: var(--brand-color); + background: var(--brand-color); + } + } +} diff --git a/app/styles/components/reply-indicator.scss b/app/styles/components/reply-indicator.scss index 367c6164a4..f200dca315 100644 --- a/app/styles/components/reply-indicator.scss +++ b/app/styles/components/reply-indicator.scss @@ -18,7 +18,11 @@ .reply-indicator__cancel { float: right; - line-height: 24px; + + .svg-icon { + height: 20px; + width: 20px; + } } .reply-indicator__display-name { diff --git a/app/styles/components/reply-mentions.scss b/app/styles/components/reply-mentions.scss new file mode 100644 index 0000000000..4448520263 --- /dev/null +++ b/app/styles/components/reply-mentions.scss @@ -0,0 +1,24 @@ +.reply-mentions { + margin: 0 10px; + color: var(--primary-text-color--faint); + font-size: 15px; + text-decoration: none; + + &__account, + a { + color: var(--highlight-text-color); + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } +} + +.status__wrapper, +.detailed-status { + .reply-mentions { + display: block; + margin: 4px 0 0 0; + } +} diff --git a/app/styles/components/search.scss b/app/styles/components/search.scss index d7f7282579..db06051852 100644 --- a/app/styles/components/search.scss +++ b/app/styles/components/search.scss @@ -2,7 +2,7 @@ position: relative; } -.search__input { +input.search__input { @include search-input; display: block; padding: 7px 30px 6px 10px; @@ -165,11 +165,6 @@ border-bottom: none; } -.search-page { - height: 100%; - min-height: 140px; -} - .column { .search { padding: 10px 15px; @@ -177,7 +172,7 @@ border-bottom: 1px solid hsla(var(--primary-text-color_hsl), 0.2); } - .search__input { + input.search__input { background-color: var(--background-color); border-radius: 8px; padding: 12px 36px 12px 16px; @@ -191,3 +186,18 @@ .search-results { padding: 15px; } + +.aliases_search, +.list-editor__search { + .search__icon { + position: relative; + + .svg-icon { + right: 0; + } + } +} + +.search .autosuggest-textarea__suggestions { + border-radius: 4px; +} diff --git a/app/styles/components/sidebar-menu.scss b/app/styles/components/sidebar-menu.scss index b69e22db6e..321cadc957 100644 --- a/app/styles/components/sidebar-menu.scss +++ b/app/styles/components/sidebar-menu.scss @@ -155,7 +155,7 @@ > .fa { width: 24px; - font-size: 20px; + font-size: 28px; margin-right: 15px; text-align: center; } @@ -165,7 +165,8 @@ height: 28px; margin-right: 15px; - svg.icon-tabler { + svg.icon-tabler, + svg.feather { stroke-width: 1px; } } diff --git a/app/styles/components/status.scss b/app/styles/components/status.scss index 276752b65d..c8fd1e55ba 100644 --- a/app/styles/components/status.scss +++ b/app/styles/components/status.scss @@ -127,7 +127,7 @@ } .status__wrapper--filtered { - color: var(--primary-text-color); + color: var(--primary-text-color--faint); border: 0; font-size: inherit; text-align: center; @@ -137,7 +137,6 @@ box-sizing: border-box; width: 100%; clear: both; - border-bottom: 1px solid var(--brand-color--med); } .status__prepend-icon-wrapper { @@ -612,13 +611,18 @@ a.status-card { background: var(--brand-color--med); position: relative; - & > .fa { - font-size: 21px; + & > .svg-icon { + width: 40px; + height: 40px; position: absolute; transform-origin: 50% 50%; top: 50%; left: 50%; transform: translate(-50%, -50%); + + svg { + stroke-width: 1px; + } } &--empty { diff --git a/app/styles/components/tabs-bar.scss b/app/styles/components/tabs-bar.scss index b792b8fa95..2827206d55 100644 --- a/app/styles/components/tabs-bar.scss +++ b/app/styles/components/tabs-bar.scss @@ -3,7 +3,6 @@ box-sizing: border-box; background: var(--brand-color); flex: 0 0 auto; - overflow-y: auto; height: 50px; width: 100%; position: sticky; @@ -56,7 +55,7 @@ } &__profile { - margin-left: 0; + margin-left: 0 !important; } &__unauthenticated { @@ -283,6 +282,7 @@ margin-right: 30px; border: 0; height: 40px; + width: max-content; overflow: hidden; padding: 13px 0 0; box-sizing: border-box; diff --git a/app/styles/components/wtf-panel.scss b/app/styles/components/wtf-panel.scss index b76e7a6e47..120abe3382 100644 --- a/app/styles/components/wtf-panel.scss +++ b/app/styles/components/wtf-panel.scss @@ -159,6 +159,10 @@ &__menu { margin-left: auto; + + > div { + height: 18px; + } } } diff --git a/app/styles/emoji_picker.scss b/app/styles/emoji_picker.scss index 6398aeb32c..8e6fe8777f 100644 --- a/app/styles/emoji_picker.scss +++ b/app/styles/emoji_picker.scss @@ -169,7 +169,7 @@ } &:hover::before { - z-index: 0; + z-index: -1; content: ""; position: absolute; top: 0; diff --git a/app/styles/forms.scss b/app/styles/forms.scss index 66382ee271..e62ec0b11b 100644 --- a/app/styles/forms.scss +++ b/app/styles/forms.scss @@ -295,6 +295,7 @@ code { input[type=text], input[type=number], input[type=email], + input[type=url], input[type=password], textarea { color: var(--primary-text-color--faint); @@ -305,6 +306,7 @@ code { input[type=text], input[type=number], input[type=email], + input[type=url], input[type=password], textarea, .rfipbtn { @@ -348,6 +350,7 @@ code { input[type=text][disabled], input[type=number][disabled], input[type=email][disabled], + input[type=url][disabled], input[type=password][disabled], textarea[disabled] { color: var(--primary-text-color--faint); @@ -362,18 +365,19 @@ code { input[type=text], input[type=number], input[type=email], + input[type=url], input[type=password], textarea, select { border-color: lighten($error-red, 12%); } + } - .error { - display: block; - font-weight: 500; - color: lighten($error-red, 12%); - margin-top: 4px; - } + .error { + display: block; + font-weight: 500; + color: lighten($error-red, 12%); + margin-top: 4px; } .input.disabled { @@ -492,7 +496,7 @@ code { &::after { display: flex; align-items: center; - font-family: "ForkAwesome"; + font-family: 'Font Awesome 5 Free'; content: ""; position: absolute; right: 12px; @@ -500,6 +504,7 @@ code { padding-left: 12px; pointer-events: none; margin-top: 8px; + font-weight: 900; } } @@ -604,6 +609,31 @@ code { margin-bottom: 14px; font-weight: bold; } + + .showable-password { + position: relative; + + input { + padding-right: 36px; + } + + .icon-button { + position: absolute; + top: 0; + right: 0; + height: 41px; + width: 36px; + padding: 0; + margin: 0; + background: transparent; + color: var(--primary-text-color); + + .svg-icon { + height: 20px; + width: 20px; + } + } + } } .block-icon { @@ -737,17 +767,19 @@ code { } } -.input .row > .fa-times-circle { +.input .row > .svg-icon.delete-field { + height: 20px; + width: 20px; position: absolute; - right: 15px; + right: 13px; cursor: pointer; color: $error-red; - transform: translateY(-9px); + transform: translateY(-11px); } -.input .row > .input.with_label + .fa-times-circle { - right: 7px; - transform: translateY(9px); +.input .row > .input.with_label + .svg-icon.delete-field { + right: 5px; + transform: translateY(7px); } .site-preview { @@ -794,12 +826,19 @@ code { margin: 10px 0 0; .button { + display: flex; + align-items: center; border: 0; background: transparent; &:hover { color: var(--primary-text-color); } + + .svg-icon { + height: 20px; + width: 20px; + } } } diff --git a/app/styles/loading.scss b/app/styles/loading.scss index 32000e89ea..b5ee786629 100644 --- a/app/styles/loading.scss +++ b/app/styles/loading.scss @@ -220,3 +220,120 @@ } } } + +// Pull to refresh +.lds-ellipsis div { + background: var(--primary-text-color--faint) !important; +} + +.ptr, +.ptr__children { + overflow: visible !important; +} + +.ptr .lds-spinner { + width: 40px; + height: 40px; +} + +/** + * iOS style loading spinner. + * Adapted from: https://loading.io/css/ + * With some help scaling it: https://signalvnoise.com/posts/2577-loading-spinner-animation-using-css-and-webkit + */ +.lds-spinner { + display: inline-block; + position: relative; + width: 80px; + height: 80px; + + div { + position: absolute; + transform-origin: 50% 50%; + animation: lds-spinner 1.2s linear infinite; + width: 100%; + height: 100%; + + &::after { + content: ' '; + display: block; + position: absolute; + top: 3.75%; + left: 46.25%; + width: 7.5%; + height: 22.5%; + border-radius: 20%; + background: var(--primary-text-color); + } + + &:nth-child(1) { + transform: rotate(0deg); + animation-delay: -1.1s; + } + + &:nth-child(2) { + transform: rotate(30deg); + animation-delay: -1s; + } + + &:nth-child(3) { + transform: rotate(60deg); + animation-delay: -0.9s; + } + + &:nth-child(4) { + transform: rotate(90deg); + animation-delay: -0.8s; + } + + &:nth-child(5) { + transform: rotate(120deg); + animation-delay: -0.7s; + } + + &:nth-child(6) { + transform: rotate(150deg); + animation-delay: -0.6s; + } + + &:nth-child(7) { + transform: rotate(180deg); + animation-delay: -0.5s; + } + + &:nth-child(8) { + transform: rotate(210deg); + animation-delay: -0.4s; + } + + &:nth-child(9) { + transform: rotate(240deg); + animation-delay: -0.3s; + } + + &:nth-child(10) { + transform: rotate(270deg); + animation-delay: -0.2s; + } + + &:nth-child(11) { + transform: rotate(300deg); + animation-delay: -0.1s; + } + + &:nth-child(12) { + transform: rotate(330deg); + animation-delay: 0s; + } + } +} + +@keyframes lds-spinner { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} diff --git a/app/styles/navigation.scss b/app/styles/navigation.scss index 623f59de27..87646cee01 100644 --- a/app/styles/navigation.scss +++ b/app/styles/navigation.scss @@ -18,7 +18,8 @@ } &--active { - svg.icon-tabler-search { + svg.icon-tabler-search, + svg.icon-tabler-code { stroke-width: 2.5px; } } @@ -62,7 +63,7 @@ justify-content: space-between; box-shadow: 0 -1px hsla(var(--primary-text-color_hsl), 0.2); border-radius: 0; - z-index: 999; + z-index: 1000; padding-bottom: env(safe-area-inset-bottom); /* iOS PWA */ overflow-x: auto; scrollbar-width: thin; @@ -86,6 +87,7 @@ color: var(--primary-text-color); text-decoration: none; font-size: 20px; + width: 55px; span { margin-top: 1px; @@ -152,7 +154,9 @@ display: flex; align-items: center; justify-content: center; - color: var(--primary-text-color--faint); + color: var(--primary-text-color); + opacity: 0.6; + font-size: 16px; &:hover, &:focus { @@ -161,16 +165,20 @@ .svg-icon { margin-right: 7px; - width: 22px; - height: 22px; + width: 26px; + height: 26px; } } &__message { position: absolute; + padding: 0 10px; align-self: center; justify-self: center; font-weight: bold; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100vw - 200px); } &__cog { diff --git a/app/styles/placeholder.scss b/app/styles/placeholder.scss index 0427e94634..37ed8ee58b 100644 --- a/app/styles/placeholder.scss +++ b/app/styles/placeholder.scss @@ -1,6 +1,8 @@ .placeholder-status, .placeholder-hashtag, -.notification--placeholder { +.notification--placeholder, +.status-card--placeholder, +.media-gallery--placeholder { position: relative; &::before { @@ -45,7 +47,8 @@ } .status__content--placeholder, -.display-name--placeholder { +.display-name--placeholder, +.chat-list-item--placeholder .chat__last-message { letter-spacing: -1px; color: var(--brand-color) !important; opacity: 0.1; @@ -105,3 +108,24 @@ background: transparent; box-shadow: none; } + +.status-card--placeholder { + pointer-events: none; + + .status-card__title, + .status-card__description, + .status-card__host { + letter-spacing: -1px; + color: var(--brand-color) !important; + word-break: break-all; + opacity: 0.1; + } +} + +.media-gallery.media-gallery--placeholder { + background: none; + + .media-gallery__item { + background-color: var(--brand-color--faint); + } +} diff --git a/app/styles/polls.scss b/app/styles/polls.scss index 97871e1b38..ca35039381 100644 --- a/app/styles/polls.scss +++ b/app/styles/polls.scss @@ -167,6 +167,15 @@ margin-right: 10px; font-size: 14px; } + + &__cancel { + height: 20px; + + .svg-icon { + height: 20px; + width: 20px; + } + } } .compose-form__poll-wrapper { diff --git a/app/styles/themes.scss b/app/styles/themes.scss index e1d328b4ff..032f8ce4db 100644 --- a/app/styles/themes.scss +++ b/app/styles/themes.scss @@ -88,6 +88,11 @@ body, var(--brand-color_s), calc(var(--brand-color_l) - 12%) ); + --warning-color--hicontrast: hsl( + var(--warning-color_h), + var(--warning-color_s), + calc(var(--warning-color_l) - 12%) + ); } .theme-mode-dark { @@ -119,4 +124,9 @@ body, var(--brand-color_s), calc(var(--brand-color_l) + 12%) ); + --warning-color--hicontrast: hsl( + var(--warning-color_h), + var(--warning-color_s), + calc(var(--warning-color_l) + 12%) + ); } diff --git a/app/styles/ui.scss b/app/styles/ui.scss index 62aba15105..f29c89ba00 100644 --- a/app/styles/ui.scss +++ b/app/styles/ui.scss @@ -239,6 +239,15 @@ font-size: 14px; font-weight: 500; } + + &__buttons .svg-icon { + height: 18px; + width: 18px; + } +} + +article:last-child > .domain { + border-bottom: none; } .domain__wrapper { @@ -765,3 +774,9 @@ background: var(--accent-color); } } + +.page__top + .page__columns .columns-area { + @media screen and (max-width: 580px) { + padding-top: 10px; + } +} diff --git a/docs/customization.md b/docs/customization.md index 4d4f5ea8ff..9c0a31301d 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -73,7 +73,7 @@ Use of the Captcha feature on the registration page is configured during the Ple ## Site Logo, Brand Color, and Promo Panel List Items The site logo, brand color, and promo panel list items are customized by copying `soapbox.example.json` in the `static/instance` folder to `soapbox.json` and editing that file. It is recommended that you test your edited soapbox.json file in a JSON validator, such as [JSONLint](https://jsonlint.com/), before using it. -The icon names for the promo panel list items can be source from [Fork Awesome](https://forkaweso.me/Fork-Awesome/icons/). Note that you should hover over or click a selected icon to see what the icon's real name is, e.g. `world` +The icon names for the promo panel list items can be source from [Line Awesome](https://icons8.com/line-awesome). Note that you should hover over or click a selected icon to see what the icon's real name is, e.g. `world` The site logo, in SVG format, is rendered to be able to allow the site theme colors to appear in the less than 100% opaque sections of the logo. The logo colors are rendered in a color that provides contrast for the site theme. diff --git a/package.json b/package.json index be051d0303..3c3ce850d2 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "detect-passive-events": "^2.0.0", "dotenv": "^8.0.0", "emoji-datasource": "5.0.0", - "emoji-mart": "^3.0.1", + "emoji-mart": "npm:emoji-mart-lazyload", "entities": "^3.0.1", "es6-symbol": "^3.1.1", "escape-html": "^1.0.3", @@ -90,7 +90,7 @@ "http-link-header": "^1.0.2", "immutable": "^4.0.0-rc.14", "imports-loader": "^1.0.0", - "intersection-observer": "^0.11.0", + "intersection-observer": "^0.12.0", "intl": "^1.2.5", "intl-messageformat": "^9.0.0", "intl-messageformat-parser": "^6.0.0", @@ -132,6 +132,7 @@ "react-redux": "^7.2.5", "react-router-dom": "^4.3.1", "react-router-scroll-4": "^1.0.0-beta.1", + "react-simple-pull-to-refresh": "^1.3.0", "react-sparklines": "^1.7.0", "react-stickynode": "^4.0.0", "react-swipeable-views": "^0.14.0", diff --git a/webpack/development.js b/webpack/development.js index be74a36502..9beb0cf5ae 100644 Binary files a/webpack/development.js and b/webpack/development.js differ diff --git a/webpack/production.js b/webpack/production.js index 220ed8991b..37a1a43972 100644 Binary files a/webpack/production.js and b/webpack/production.js differ diff --git a/webpack/translationRunner.js b/webpack/translationRunner.js index 5f75ee7578..739d7a3079 100644 Binary files a/webpack/translationRunner.js and b/webpack/translationRunner.js differ diff --git a/yarn.lock b/yarn.lock index 06faba1a0a..d867807f62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3598,12 +3598,13 @@ emoji-datasource@5.0.0: resolved "https://registry.yarnpkg.com/emoji-datasource/-/emoji-datasource-5.0.0.tgz#1522fdba3c52223a1cf5a1c1fc282935400eaa06" integrity sha512-LuvLWFnxznTH++GytEzpzOPUo1SB+6CUFqIlVETJJ3x9fpyMCKFfyqberbhMLOpT1qcNe+km+zoyBeUSC3u5Rw== -emoji-mart@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/emoji-mart/-/emoji-mart-3.0.1.tgz#9ce86706e02aea0506345f98464814a662ca54c6" - integrity sha512-sxpmMKxqLvcscu6mFn9ITHeZNkGzIvD0BSNFE/LJESPbCA8s1jM6bCDPjWbV31xHq7JXaxgpHxLB54RCbBZSlg== +"emoji-mart@npm:emoji-mart-lazyload": + version "3.0.1-j" + resolved "https://registry.yarnpkg.com/emoji-mart-lazyload/-/emoji-mart-lazyload-3.0.1-j.tgz#87a90d30b79d9145ece078d53e3e683c1a10ce9c" + integrity sha512-0wKF7MR0/iAeCIoiBLY+JjXCugycTgYRC2SL0y9/bjNSQlbeMdzILmPQJAufU/mgLFDUitOvjxLDhOZ9yxZ48g== dependencies: "@babel/runtime" "^7.0.0" + intersection-observer "^0.12.0" prop-types "^15.6.0" emoji-regex@^8.0.0: @@ -4951,10 +4952,10 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -intersection-observer@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.11.0.tgz#f4ea067070326f68393ee161cc0a2ca4c0040c6f" - integrity sha512-KZArj2QVnmdud9zTpKf279m2bbGfG+4/kn16UU0NL3pTVl52ZHiJ9IRNSsnn6jaHrL9EGLFM5eWjTx2fz/+zoQ== +intersection-observer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.0.tgz#6c84628f67ce8698e5f9ccf857d97718745837aa" + integrity sha512-2Vkz8z46Dv401zTWudDGwO7KiGHNDkMv417T5ItcNYfmvHR/1qCTVBO9vwH8zZmQ0WkA/1ARwpysR9bsnop4NQ== intl-messageformat-parser@6.1.2: version "6.1.2" @@ -7990,6 +7991,11 @@ react-side-effect@^2.1.0: resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== +react-simple-pull-to-refresh@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/react-simple-pull-to-refresh/-/react-simple-pull-to-refresh-1.3.0.tgz#5f7bcd475ea5c33ecd505d097b14f56c3e5e3ce8" + integrity sha512-QPFGFsbroh2WoTcLCh3f6peMRfSettYJKCXMS9FNbFav7GWKD2whqACiNLx+Mi+VkP/I+aerB7kEirk+DQx41A== + react-sparklines@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz#9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60"